diff --git a/dist/vis.js b/dist/vis.js index 53ac3dcc..4a23d581 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -3131,7 +3131,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Emitter = __webpack_require__(68); + var Emitter = __webpack_require__(43); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var util = __webpack_require__(1); @@ -6294,13 +6294,13 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Emitter = __webpack_require__(68); + var Emitter = __webpack_require__(43); var Hammer = __webpack_require__(41); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); - var Core = __webpack_require__(43); + var Core = __webpack_require__(44); var TimeAxis = __webpack_require__(35); var CurrentTime = __webpack_require__(26); var CustomTime = __webpack_require__(27); @@ -6734,13 +6734,13 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Emitter = __webpack_require__(68); + var Emitter = __webpack_require__(43); var Hammer = __webpack_require__(41); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); - var Core = __webpack_require__(43); + var Core = __webpack_require__(44); var TimeAxis = __webpack_require__(35); var CurrentTime = __webpack_require__(26); var CustomTime = __webpack_require__(27); @@ -7733,7 +7733,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(44); + var hammerUtil = __webpack_require__(48); var moment = __webpack_require__(40); var Component = __webpack_require__(25); var DateUtil = __webpack_require__(15); @@ -10481,7 +10481,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(25); var moment = __webpack_require__(40); - var locales = __webpack_require__(48); + var locales = __webpack_require__(49); /** * A current time bar @@ -10658,7 +10658,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(25); var moment = __webpack_require__(40); - var locales = __webpack_require__(48); + var locales = __webpack_require__(49); /** * A custom time bar @@ -11499,9 +11499,9 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var DOMutil = __webpack_require__(2); - var Line = __webpack_require__(49); - var Bar = __webpack_require__(50); - var Points = __webpack_require__(51); + var Line = __webpack_require__(50); + var Bar = __webpack_require__(51); + var Points = __webpack_require__(52); /** * /** @@ -14166,8 +14166,8 @@ return /******/ (function(modules) { // webpackBootstrap var DataAxis = __webpack_require__(28); var GraphGroup = __webpack_require__(29); var Legend = __webpack_require__(33); - var BarFunctions = __webpack_require__(50); - var LineFunctions = __webpack_require__(49); + var BarFunctions = __webpack_require__(51); + var LineFunctions = __webpack_require__(50); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -15572,51 +15572,51 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var _modulesGroups = __webpack_require__(52); + var _modulesGroups = __webpack_require__(53); var _modulesGroups2 = _interopRequireDefault(_modulesGroups); - var _modulesNodesHandler = __webpack_require__(53); + var _modulesNodesHandler = __webpack_require__(54); var _modulesNodesHandler2 = _interopRequireDefault(_modulesNodesHandler); - var _modulesEdgesHandler = __webpack_require__(54); + var _modulesEdgesHandler = __webpack_require__(55); var _modulesEdgesHandler2 = _interopRequireDefault(_modulesEdgesHandler); - var _modulesPhysicsEngine = __webpack_require__(55); + var _modulesPhysicsEngine = __webpack_require__(56); var _modulesPhysicsEngine2 = _interopRequireDefault(_modulesPhysicsEngine); - var _modulesClustering = __webpack_require__(56); + var _modulesClustering = __webpack_require__(57); var _modulesClustering2 = _interopRequireDefault(_modulesClustering); - var _modulesCanvasRenderer = __webpack_require__(57); + var _modulesCanvasRenderer = __webpack_require__(58); var _modulesCanvasRenderer2 = _interopRequireDefault(_modulesCanvasRenderer); - var _modulesCanvas = __webpack_require__(58); + var _modulesCanvas = __webpack_require__(59); var _modulesCanvas2 = _interopRequireDefault(_modulesCanvas); - var _modulesView = __webpack_require__(59); + var _modulesView = __webpack_require__(60); var _modulesView2 = _interopRequireDefault(_modulesView); - var _modulesInteractionHandler = __webpack_require__(60); + var _modulesInteractionHandler = __webpack_require__(61); var _modulesInteractionHandler2 = _interopRequireDefault(_modulesInteractionHandler); - var _modulesSelectionHandler = __webpack_require__(61); + var _modulesSelectionHandler = __webpack_require__(62); var _modulesSelectionHandler2 = _interopRequireDefault(_modulesSelectionHandler); - var _modulesLayoutEngine = __webpack_require__(62); + var _modulesLayoutEngine = __webpack_require__(63); var _modulesLayoutEngine2 = _interopRequireDefault(_modulesLayoutEngine); - var _modulesManipulationSystem = __webpack_require__(63); + var _modulesManipulationSystem = __webpack_require__(64); var _modulesManipulationSystem2 = _interopRequireDefault(_modulesManipulationSystem); @@ -15628,12 +15628,12 @@ return /******/ (function(modules) { // webpackBootstrap var _modulesValidator2 = _interopRequireDefault(_modulesValidator); - var _modulesComponentsAllOptionsJs = __webpack_require__(64); + var _modulesComponentsAllOptionsJs = __webpack_require__(65); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(65); + __webpack_require__(66); - var Emitter = __webpack_require__(68); + var Emitter = __webpack_require__(43); var Hammer = __webpack_require__(41); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -15641,8 +15641,8 @@ return /******/ (function(modules) { // webpackBootstrap var dotparser = __webpack_require__(38); var gephiParser = __webpack_require__(39); var Images = __webpack_require__(37); - var Activator = __webpack_require__(66); - var locales = __webpack_require__(67); + var Activator = __webpack_require__(67); + var locales = __webpack_require__(68); /** * @constructor Network @@ -17135,8 +17135,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; if (typeof window !== 'undefined') { - var propagating = __webpack_require__(83); - var Hammer = window['Hammer'] || __webpack_require__(82); + var propagating = __webpack_require__(70); + var Hammer = window['Hammer'] || __webpack_require__(71); module.exports = propagating(Hammer, { preventDefault: 'mouse' }); @@ -17366,18 +17366,188 @@ return /******/ (function(modules) { // webpackBootstrap /* 43 */ /***/ function(module, exports, __webpack_require__) { + + /** + * Expose `Emitter`. + */ + + module.exports = Emitter; + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + + function Emitter(obj) { + if (obj) return mixin(obj); + }; + + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; + }; + + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; + + function on() { + self.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; + }; + + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; + + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; + }; + + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + 'use strict'; - var Emitter = __webpack_require__(68); + var Emitter = __webpack_require__(43); var Hammer = __webpack_require__(41); - var hammerUtil = __webpack_require__(44); + var hammerUtil = __webpack_require__(48); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var ItemSet = __webpack_require__(32); var TimeAxis = __webpack_require__(35); - var Activator = __webpack_require__(66); + var Activator = __webpack_require__(67); var DateUtil = __webpack_require__(15); var CustomTime = __webpack_require__(27); @@ -18329,78 +18499,6 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Core; -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Hammer = __webpack_require__(41); - - /** - * Register a touch event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.onTouch = function (hammer, callback) { - callback.inputHandler = function (event) { - if (event.isFirst && !isTouching) { - callback(event); - - isTouching = true; - setTimeout(function () { - isTouching = false; - }, 0); - } - }; - - hammer.on('hammer.input', callback.inputHandler); - }; - - // isTouching is true while a touch action is being emitted - // this is a hack to prevent `touch` from being fired twice - var isTouching = false; - - /** - * Register a release event, taking place after a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.onRelease = function (hammer, callback) { - callback.inputHandler = function (event) { - if (event.isFinal && !isReleasing) { - callback(event); - - isReleasing = true; - setTimeout(function () { - isReleasing = false; - }, 0); - } - }; - - return hammer.on('hammer.input', callback.inputHandler); - }; - - // isReleasing is true while a release action is being emitted - // this is a hack to prevent `release` from being fired twice - var isReleasing = false; - - /** - * Unregister a touch event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.offTouch = function (hammer, callback) { - hammer.off('hammer.input', callback.inputHandler); - }; - - /** - * Unregister a release event, taking place before a gesture - * @param {Hammer} hammer A hammer instance - * @param {function} callback Callback, called as callback(event) - */ - exports.offRelease = exports.offTouch; - /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { @@ -18417,7 +18515,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _componentsColorPicker = __webpack_require__(70); + var _componentsColorPicker = __webpack_require__(72); var _componentsColorPicker2 = _interopRequireDefault(_componentsColorPicker); @@ -19203,12 +19301,12 @@ return /******/ (function(modules) { // webpackBootstrap var globalSearch = Validator.findInOptions(option, allOptions, [], true); var localSearchThreshold = 8; - var globalSearchThreshold = 5; + var globalSearchThreshold = 4; if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) { console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option, '') + 'Perhaps it was misplaced? Matching option found at: ' + Validator.printLocation(globalSearch.path, globalSearch.closestMatch, ''), printStyle); } else if (localSearch.distance <= localSearchThreshold) { - console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, localSearch.closestMatch), printStyle); + console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, option), printStyle); } else { console.log('%cUnknown option detected: "' + option + '". Did you mean one of these: ' + Validator.print(Object.keys(options)) + Validator.printLocation(path, option), printStyle); } @@ -19558,6 +19656,78 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 48 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Hammer = __webpack_require__(41); + + /** + * Register a touch event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.onTouch = function (hammer, callback) { + callback.inputHandler = function (event) { + if (event.isFirst && !isTouching) { + callback(event); + + isTouching = true; + setTimeout(function () { + isTouching = false; + }, 0); + } + }; + + hammer.on('hammer.input', callback.inputHandler); + }; + + // isTouching is true while a touch action is being emitted + // this is a hack to prevent `touch` from being fired twice + var isTouching = false; + + /** + * Register a release event, taking place after a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.onRelease = function (hammer, callback) { + callback.inputHandler = function (event) { + if (event.isFinal && !isReleasing) { + callback(event); + + isReleasing = true; + setTimeout(function () { + isReleasing = false; + }, 0); + } + }; + + return hammer.on('hammer.input', callback.inputHandler); + }; + + // isReleasing is true while a release action is being emitted + // this is a hack to prevent `release` from being fired twice + var isReleasing = false; + + /** + * Unregister a touch event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.offTouch = function (hammer, callback) { + hammer.off('hammer.input', callback.inputHandler); + }; + + /** + * Unregister a release event, taking place before a gesture + * @param {Hammer} hammer A hammer instance + * @param {function} callback Callback, called as callback(event) + */ + exports.offRelease = exports.offTouch; + +/***/ }, +/* 49 */ /***/ function(module, exports, __webpack_require__) { // English @@ -19579,13 +19749,13 @@ return /******/ (function(modules) { // webpackBootstrap exports['nl_BE'] = exports['nl']; /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + var Points = __webpack_require__(52); function Line(groupId, options) { this.groupId = groupId; @@ -19874,13 +20044,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Line; /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + var Points = __webpack_require__(52); function Bargraph(groupId, options) { this.groupId = groupId; @@ -20122,7 +20292,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 51 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20169,7 +20339,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -20311,7 +20481,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 53 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20326,11 +20496,11 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _componentsNode = __webpack_require__(71); + var _componentsNode = __webpack_require__(73); var _componentsNode2 = _interopRequireDefault(_componentsNode); - var _componentsSharedLabel = __webpack_require__(72); + var _componentsSharedLabel = __webpack_require__(74); var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); @@ -20784,7 +20954,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 54 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20799,11 +20969,11 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _componentsEdge = __webpack_require__(84); + var _componentsEdge = __webpack_require__(75); var _componentsEdge2 = _interopRequireDefault(_componentsEdge); - var _componentsSharedLabel = __webpack_require__(72); + var _componentsSharedLabel = __webpack_require__(74); var _componentsSharedLabel2 = _interopRequireDefault(_componentsSharedLabel); @@ -21204,7 +21374,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 55 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21219,27 +21389,27 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _componentsPhysicsBarnesHutSolver = __webpack_require__(73); + var _componentsPhysicsBarnesHutSolver = __webpack_require__(76); var _componentsPhysicsBarnesHutSolver2 = _interopRequireDefault(_componentsPhysicsBarnesHutSolver); - var _componentsPhysicsRepulsionSolver = __webpack_require__(74); + var _componentsPhysicsRepulsionSolver = __webpack_require__(77); var _componentsPhysicsRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsRepulsionSolver); - var _componentsPhysicsHierarchicalRepulsionSolver = __webpack_require__(75); + var _componentsPhysicsHierarchicalRepulsionSolver = __webpack_require__(78); var _componentsPhysicsHierarchicalRepulsionSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalRepulsionSolver); - var _componentsPhysicsSpringSolver = __webpack_require__(76); + var _componentsPhysicsSpringSolver = __webpack_require__(79); var _componentsPhysicsSpringSolver2 = _interopRequireDefault(_componentsPhysicsSpringSolver); - var _componentsPhysicsHierarchicalSpringSolver = __webpack_require__(77); + var _componentsPhysicsHierarchicalSpringSolver = __webpack_require__(80); var _componentsPhysicsHierarchicalSpringSolver2 = _interopRequireDefault(_componentsPhysicsHierarchicalSpringSolver); - var _componentsPhysicsCentralGravitySolver = __webpack_require__(78); + var _componentsPhysicsCentralGravitySolver = __webpack_require__(81); var _componentsPhysicsCentralGravitySolver2 = _interopRequireDefault(_componentsPhysicsCentralGravitySolver); @@ -21780,7 +21950,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -21795,7 +21965,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var _componentsNodesCluster = __webpack_require__(79); + var _componentsNodesCluster = __webpack_require__(82); var _componentsNodesCluster2 = _interopRequireDefault(_componentsNodesCluster); @@ -22432,7 +22602,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22770,7 +22940,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22784,7 +22954,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var Hammer = __webpack_require__(41); - var hammerUtil = __webpack_require__(44); + var hammerUtil = __webpack_require__(48); var util = __webpack_require__(1); @@ -23138,7 +23308,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 59 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -23540,7 +23710,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 60 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23555,11 +23725,11 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var _componentsNavigationHandler = __webpack_require__(80); + var _componentsNavigationHandler = __webpack_require__(83); var _componentsNavigationHandler2 = _interopRequireDefault(_componentsNavigationHandler); - var _componentsPopup = __webpack_require__(81); + var _componentsPopup = __webpack_require__(84); var _componentsPopup2 = _interopRequireDefault(_componentsPopup); @@ -24268,7 +24438,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 61 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -24281,7 +24451,7 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Node = __webpack_require__(71); + var Node = __webpack_require__(73); var util = __webpack_require__(1); var SelectionHandler = (function () { @@ -24956,7 +25126,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 62 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -25453,7 +25623,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 63 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -25468,7 +25638,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Hammer = __webpack_require__(41); - var hammerUtil = __webpack_require__(44); + var hammerUtil = __webpack_require__(48); /** * clears the toolbar div element of children @@ -26642,7 +26812,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 64 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -27100,7 +27270,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 65 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { /** @@ -27384,13 +27554,13 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 66 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keycharm = __webpack_require__(86); - var Emitter = __webpack_require__(68); + var keycharm = __webpack_require__(85); + var Emitter = __webpack_require__(43); var Hammer = __webpack_require__(41); var util = __webpack_require__(1); @@ -27537,7 +27707,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Activator; /***/ }, -/* 67 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { // English @@ -27580,176 +27750,6 @@ return /******/ (function(modules) { // webpackBootstrap exports['nl_NL'] = exports['nl']; exports['nl_BE'] = exports['nl']; -/***/ }, -/* 68 */ -/***/ function(module, exports, __webpack_require__) { - - - /** - * Expose `Emitter`. - */ - - module.exports = Emitter; - - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - }; - - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; - }; - - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; - }; - - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; - - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; - - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - - /***/ }, /* 69 */ /***/ function(module, exports, __webpack_require__) { @@ -30837,2672 +30837,2707 @@ return /******/ (function(modules) { // webpackBootstrap return _moment; })); - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(104)(module))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(87)(module))) /***/ }, /* 70 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + (function (factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + window.propagating = factory(); + } + }(function () { + var _firstTarget = null; // singleton, will contain the target element where the touch event started + var _processing = false; // singleton, true when a touch event is being handled - var Hammer = __webpack_require__(41); - var hammerUtil = __webpack_require__(44); - var util = __webpack_require__(1); + /** + * Extend an Hammer.js instance with event propagation. + * + * Features: + * - Events emitted by hammer will propagate in order from child to parent + * elements. + * - Events are extended with a function `event.stopPropagation()` to stop + * propagation to parent elements. + * - An option `preventDefault` to stop all default browser behavior. + * + * Usage: + * var hammer = propagatingHammer(new Hammer(element)); + * var hammer = propagatingHammer(new Hammer(element), {preventDefault: true}); + * + * @param {Hammer.Manager} hammer An hammer instance. + * @param {Object} [options] Available options: + * - `preventDefault: true | 'mouse' | 'touch' | 'pen'`. + * Enforce preventing the default browser behavior. + * Cannot be set to `false`. + * @return {Hammer.Manager} Returns the same hammer instance with extended + * functionality + */ + return function propagating(hammer, options) { + if (options && options.preventDefault === false) { + throw new Error('Only supports preventDefault == true'); + } + var _options = options || { + preventDefault: false + }; - var ColorPicker = (function () { - function ColorPicker() { - var pixelRatio = arguments[0] === undefined ? 1 : arguments[0]; + if (hammer.Manager) { + // This looks like the Hammer constructor. + // Overload the constructors with our own. + var Hammer = hammer; - _classCallCheck(this, ColorPicker); + var PropagatingHammer = function(element, options) { + return propagating(new Hammer(element, options), _options); + }; + Hammer.extend(PropagatingHammer, Hammer); + PropagatingHammer.Manager = function (element, options) { + return propagating(new Hammer.Manager(element, options), _options); + }; - this.pixelRatio = pixelRatio; - this.generated = false; - this.centerCoordinates = { x: 289 / 2, y: 289 / 2 }; - this.r = 289 * 0.49; - this.color = { r: 255, g: 255, b: 255, a: 1 }; - this.hueCircle = undefined; - this.initialColor = { r: 255, g: 255, b: 255, a: 1 }; - this.previousColor = undefined; - this.applied = false; + return PropagatingHammer; + } - // bound by - this.updateCallback = function () {}; + // attach to DOM element + var element = hammer.element; + element.hammer = hammer; - // create all DOM elements - this._create(); - } + // move the original functions that we will wrap + hammer._on = hammer.on; + hammer._off = hammer.off; + hammer._emit = hammer.emit; + hammer._destroy = hammer.destroy; - _createClass(ColorPicker, [{ - key: 'insertTo', + /** @type {Object.>} */ + hammer._handlers = {}; - /** - * this inserts the colorPicker into a div from the DOM - * @param container - */ - value: function insertTo(container) { - if (this.hammer !== undefined) { - this.hammer.destroy(); - this.hammer = undefined; + // register an event to catch the start of a gesture and store the + // target in a singleton + hammer._on('hammer.input', function (event) { + if (_options.preventDefault === true || (_options.preventDefault === event.pointerType)) { + event.preventDefault(); } - this.container = container; - this.container.appendChild(this.frame); - this._bindHammer(); - - this._setSize(); - } - }, { - key: 'setCallback', - - /** - * the callback is executed on apply and save. Bind it to the application - * @param callback - */ - value: function setCallback(callback) { - if (typeof callback === 'function') { - this.updateCallback = callback; - } else { - throw new Error('Function attempted to set as colorPicker callback is not a function.'); + if (event.isFirst) { + _firstTarget = event.target; + _processing = true; } - } - }, { - key: '_isColorString', - value: function _isColorString(color) { - var htmlColors = { black: '#000000', navy: '#000080', darkblue: '#00008B', mediumblue: '#0000CD', blue: '#0000FF', darkgreen: '#006400', green: '#008000', teal: '#008080', darkcyan: '#008B8B', deepskyblue: '#00BFFF', darkturquoise: '#00CED1', mediumspringgreen: '#00FA9A', lime: '#00FF00', springgreen: '#00FF7F', aqua: '#00FFFF', cyan: '#00FFFF', midnightblue: '#191970', dodgerblue: '#1E90FF', lightseagreen: '#20B2AA', forestgreen: '#228B22', seagreen: '#2E8B57', darkslategray: '#2F4F4F', limegreen: '#32CD32', mediumseagreen: '#3CB371', turquoise: '#40E0D0', royalblue: '#4169E1', steelblue: '#4682B4', darkslateblue: '#483D8B', mediumturquoise: '#48D1CC', indigo: '#4B0082', darkolivegreen: '#556B2F', cadetblue: '#5F9EA0', cornflowerblue: '#6495ED', mediumaquamarine: '#66CDAA', dimgray: '#696969', slateblue: '#6A5ACD', olivedrab: '#6B8E23', slategray: '#708090', lightslategray: '#778899', mediumslateblue: '#7B68EE', lawngreen: '#7CFC00', chartreuse: '#7FFF00', aquamarine: '#7FFFD4', maroon: '#800000', purple: '#800080', olive: '#808000', gray: '#808080', skyblue: '#87CEEB', lightskyblue: '#87CEFA', blueviolet: '#8A2BE2', darkred: '#8B0000', darkmagenta: '#8B008B', saddlebrown: '#8B4513', darkseagreen: '#8FBC8F', lightgreen: '#90EE90', mediumpurple: '#9370D8', darkviolet: '#9400D3', palegreen: '#98FB98', darkorchid: '#9932CC', yellowgreen: '#9ACD32', sienna: '#A0522D', brown: '#A52A2A', darkgray: '#A9A9A9', lightblue: '#ADD8E6', greenyellow: '#ADFF2F', paleturquoise: '#AFEEEE', lightsteelblue: '#B0C4DE', powderblue: '#B0E0E6', firebrick: '#B22222', darkgoldenrod: '#B8860B', mediumorchid: '#BA55D3', rosybrown: '#BC8F8F', darkkhaki: '#BDB76B', silver: '#C0C0C0', mediumvioletred: '#C71585', indianred: '#CD5C5C', peru: '#CD853F', chocolate: '#D2691E', tan: '#D2B48C', lightgrey: '#D3D3D3', palevioletred: '#D87093', thistle: '#D8BFD8', orchid: '#DA70D6', goldenrod: '#DAA520', crimson: '#DC143C', gainsboro: '#DCDCDC', plum: '#DDA0DD', burlywood: '#DEB887', lightcyan: '#E0FFFF', lavender: '#E6E6FA', darksalmon: '#E9967A', violet: '#EE82EE', palegoldenrod: '#EEE8AA', lightcoral: '#F08080', khaki: '#F0E68C', aliceblue: '#F0F8FF', honeydew: '#F0FFF0', azure: '#F0FFFF', sandybrown: '#F4A460', wheat: '#F5DEB3', beige: '#F5F5DC', whitesmoke: '#F5F5F5', mintcream: '#F5FFFA', ghostwhite: '#F8F8FF', salmon: '#FA8072', antiquewhite: '#FAEBD7', linen: '#FAF0E6', lightgoldenrodyellow: '#FAFAD2', oldlace: '#FDF5E6', red: '#FF0000', fuchsia: '#FF00FF', magenta: '#FF00FF', deeppink: '#FF1493', orangered: '#FF4500', tomato: '#FF6347', hotpink: '#FF69B4', coral: '#FF7F50', darkorange: '#FF8C00', lightsalmon: '#FFA07A', orange: '#FFA500', lightpink: '#FFB6C1', pink: '#FFC0CB', gold: '#FFD700', peachpuff: '#FFDAB9', navajowhite: '#FFDEAD', moccasin: '#FFE4B5', bisque: '#FFE4C4', mistyrose: '#FFE4E1', blanchedalmond: '#FFEBCD', papayawhip: '#FFEFD5', lavenderblush: '#FFF0F5', seashell: '#FFF5EE', cornsilk: '#FFF8DC', lemonchiffon: '#FFFACD', floralwhite: '#FFFAF0', snow: '#FFFAFA', yellow: '#FFFF00', lightyellow: '#FFFFE0', ivory: '#FFFFF0', white: '#FFFFFF' }; - if (typeof color === 'string') { - return htmlColors[color]; + if (event.isFinal) { + _processing = false; } - } - }, { - key: 'setColor', + }); /** - * Set the color of the colorPicker - * Supported formats: - * 'red' --> HTML color string - * '#ffffff' --> hex string - * 'rbg(255,255,255)' --> rgb string - * 'rgba(255,255,255,1.0)' --> rgba string - * {r:255,g:255,b:255} --> rgb object - * {r:255,g:255,b:255,a:1.0} --> rgba object - * @param color - * @param setInitial + * Register a handler for one or multiple events + * @param {String} events A space separated string with events + * @param {function} handler A callback function, called as handler(event) + * @returns {Hammer.Manager} Returns the hammer instance */ - value: function setColor(color) { - var setInitial = arguments[1] === undefined ? true : arguments[1]; - - if (color === 'none') { - return; - } - - var rgba = undefined; - - // if a html color shorthand is used, convert to hex - var htmlColor = this._isColorString(color); - if (htmlColor !== undefined) { - color = htmlColor; - } + hammer.on = function (events, handler) { + // register the handler + split(events).forEach(function (event) { + var _handlers = hammer._handlers[event]; + if (!_handlers) { + hammer._handlers[event] = _handlers = []; - // check format - if (util.isString(color) === true) { - if (util.isValidRGB(color) === true) { - var rgbaArray = color.substr(4).substr(0, color.length - 5).split(','); - rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: 1 }; - } else if (util.isValidRGBA(color) === true) { - var rgbaArray = color.substr(5).substr(0, color.length - 6).split(','); - rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: rgbaArray[3] }; - } else if (util.isValidHex(color) === true) { - var rgbObj = util.hexToRGB(color); - rgba = { r: rgbObj.r, g: rgbObj.g, b: rgbObj.b, a: 1 }; - } - } else { - if (color instanceof Object) { - if (color.r !== undefined && color.g !== undefined && color.b !== undefined) { - var alpha = color.a !== undefined ? color.a : '1.0'; - rgba = { r: color.r, g: color.g, b: color.b, a: alpha }; - } + // register the static, propagated handler + hammer._on(event, propagatedHandler); } - } + _handlers.push(handler); + }); - // set color - if (rgba === undefined) { - throw new Error('Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: ' + JSON.stringify(color)); - } else { - this._setColor(rgba, setInitial); - } - } - }, { - key: 'show', + return hammer; + }; /** - * this shows the color picker at a location. The hue circle is constructed once and stored. - * @param x - * @param y + * Unregister a handler for one or multiple events + * @param {String} events A space separated string with events + * @param {function} [handler] Optional. The registered handler. If not + * provided, all handlers for given events + * are removed. + * @returns {Hammer.Manager} Returns the hammer instance */ - value: function show(x, y) { - this.applied = false; - this.frame.style.display = 'block'; - this.frame.style.top = y + 'px'; - this.frame.style.left = x + 'px'; - this._generateHueCircle(); - } - }, { - key: '_hide', + hammer.off = function (events, handler) { + // unregister the handler + split(events).forEach(function (event) { + var _handlers = hammer._handlers[event]; + if (_handlers) { + _handlers = handler ? _handlers.filter(function (h) { + return h !== handler; + }) : []; - // ------------------------------------------ PRIVATE ----------------------------- // + if (_handlers.length > 0) { + hammer._handlers[event] = _handlers; + } + else { + // remove static, propagated handler + hammer._off(event, propagatedHandler); + delete hammer._handlers[event]; + } + } + }); + + return hammer; + }; /** - * Hide the picker. Is called by the cancel button. - * Optional boolean to store the previous color for easy access later on. - * @param storePrevious - * @private + * Emit to the event listeners + * @param {string} eventType + * @param {Event} event */ - value: function _hide() { - var storePrevious = arguments[0] === undefined ? true : arguments[0]; - - // store the previous color for next time; - if (storePrevious === true) { - this.previousColor = util.extend({}, this.color); + hammer.emit = function(eventType, event) { + if (!_processing) { + _firstTarget = event.target; } + hammer._emit(eventType, event); + }; - if (this.applied === true) { - this.updateCallback(this.initialColor); - } + hammer.destroy = function () { + // Detach from DOM element + var element = hammer.element; + delete element.hammer; - this.frame.style.display = 'none'; - } - }, { - key: '_save', + // clear all handlers + hammer._handlers = {}; - /** - * bound to the save button. Saves and hides. - * @private - */ - value: function _save() { - this.updateCallback(this.color); - this.applied = false; - this._hide(); + // call original hammer destroy + hammer._destroy(); + }; + + // split a string with space separated words + function split(events) { + return events.match(/[^ ]+/g); } - }, { - key: '_apply', /** - * Bound to apply button. Saves but does not close. Is undone by the cancel button. - * @private + * A static event handler, applying event propagation. + * @param {Object} event */ - value: function _apply() { - this.applied = true; - this.updateCallback(this.color); - this._updatePicker(this.color); - } - }, { - key: '_loadLast', - - /** - * load the color from the previous session. - * @private - */ - value: function _loadLast() { - if (this.previousColor !== undefined) { - this.setColor(this.previousColor, false); - } else { - alert('There is no last color to load...'); - } - } - }, { - key: '_setColor', - - /** - * set the color, place the picker - * @param rgba - * @param setInitial - * @private - */ - value: function _setColor(rgba) { - var setInitial = arguments[1] === undefined ? true : arguments[1]; + function propagatedHandler(event) { + // let only a single hammer instance handle this event + if (event.type !== 'hammer.input') { + // it is possible that the same srcEvent is used with multiple hammer events, + // we keep track on which events are handled in an object _handled + if (!event.srcEvent._handled) { + event.srcEvent._handled = {}; + } - // store the initial color - if (setInitial === true) { - this.initialColor = util.extend({}, rgba); + if (event.srcEvent._handled[event.type]) { + return; + } + else { + event.srcEvent._handled[event.type] = true; + } } - this.color = rgba; - var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); - - var angleConvert = 2 * Math.PI; - var radius = this.r * hsv.s; - var x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h); - var y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h); - - this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px'; - this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px'; - - this._updatePicker(rgba); - } - }, { - key: '_setOpacity', - - /** - * bound to opacity control - * @param value - * @private - */ - value: function _setOpacity(value) { - this.color.a = value / 100; - this._updatePicker(this.color); - } - }, { - key: '_setBrightness', + // attach a stopPropagation function to the event + var stopped = false; + event.stopPropagation = function () { + stopped = true; + }; - /** - * bound to brightness control - * @param value - * @private - */ - value: function _setBrightness(value) { - var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); - hsv.v = value / 100; - var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); - rgba['a'] = this.color.a; - this.color = rgba; - this._updatePicker(); - } - }, { - key: '_updatePicker', + // attach firstTarget property to the event + event.firstTarget = _firstTarget; - /** - * update the colorpicker. A black circle overlays the hue circle to mimic the brightness decreasing. - * @param rgba - * @private - */ - value: function _updatePicker() { - var rgba = arguments[0] === undefined ? this.color : arguments[0]; + // propagate over all elements (until stopped) + var elem = _firstTarget; + while (elem && !stopped) { + var _handlers = elem.hammer && elem.hammer._handlers[event.type]; + if (_handlers) { + for (var i = 0; i < _handlers.length && !stopped; i++) { + _handlers[i](event); + } + } - var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); - var ctx = this.colorPickerCanvas.getContext('2d'); - if (this.pixelRation === undefined) { - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + elem = elem.parentNode; } - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - - // clear the canvas - var w = this.colorPickerCanvas.clientWidth; - var h = this.colorPickerCanvas.clientHeight; - ctx.clearRect(0, 0, w, h); - - ctx.putImageData(this.hueCircle, 0, 0); - ctx.fillStyle = 'rgba(0,0,0,' + (1 - hsv.v) + ')'; - ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); - ctx.fill(); - - this.brightnessRange.value = 100 * hsv.v; - this.opacityRange.value = 100 * rgba.a; - - this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; - this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; } - }, { - key: '_setSize', - - /** - * used by create to set the size of the canvas. - * @private - */ - value: function _setSize() { - this.colorPickerCanvas.style.width = '100%'; - this.colorPickerCanvas.style.height = '100%'; - this.colorPickerCanvas.width = 289 * this.pixelRatio; - this.colorPickerCanvas.height = 289 * this.pixelRatio; - } - }, { - key: '_create', - - /** - * create all dom elements - * TODO: cleanup, lots of similar dom elements - * @private - */ - value: function _create() { - this.frame = document.createElement('div'); - this.frame.className = 'vis-color-picker'; - - this.colorPickerDiv = document.createElement('div'); - this.colorPickerSelector = document.createElement('div'); - this.colorPickerSelector.className = 'vis-selector'; - this.colorPickerDiv.appendChild(this.colorPickerSelector); - - this.colorPickerCanvas = document.createElement('canvas'); - this.colorPickerDiv.appendChild(this.colorPickerCanvas); - - if (!this.colorPickerCanvas.getContext) { - var noCanvas = document.createElement('DIV'); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold'; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.colorPickerCanvas.appendChild(noCanvas); - } else { - var ctx = this.colorPickerCanvas.getContext('2d'); - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); - - this.colorPickerCanvas.getContext('2d').setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - } - - this.colorPickerDiv.className = 'vis-color'; - - this.opacityDiv = document.createElement('div'); - this.opacityDiv.className = 'vis-opacity'; - - this.brightnessDiv = document.createElement('div'); - this.brightnessDiv.className = 'vis-brightness'; - - this.arrowDiv = document.createElement('div'); - this.arrowDiv.className = 'vis-arrow'; - - this.opacityRange = document.createElement('input'); - this.opacityRange.type = 'range'; - this.opacityRange.min = '0'; - this.opacityRange.max = '100'; - this.opacityRange.value = '100'; - this.opacityRange.className = 'vis-range'; - - this.brightnessRange = document.createElement('input'); - this.brightnessRange.type = 'range'; - this.brightnessRange.min = '0'; - this.brightnessRange.max = '100'; - this.brightnessRange.value = '100'; - this.brightnessRange.className = 'vis-range'; - - this.opacityDiv.appendChild(this.opacityRange); - this.brightnessDiv.appendChild(this.brightnessRange); - - var me = this; - this.opacityRange.onchange = function () { - me._setOpacity(this.value); - }; - this.opacityRange.oninput = function () { - me._setOpacity(this.value); - }; - this.brightnessRange.onchange = function () { - me._setBrightness(this.value); - }; - this.brightnessRange.oninput = function () { - me._setBrightness(this.value); - }; - - this.brightnessLabel = document.createElement('div'); - this.brightnessLabel.className = 'vis-label vis-brightness'; - this.brightnessLabel.innerHTML = 'brightness:'; - - this.opacityLabel = document.createElement('div'); - this.opacityLabel.className = 'vis-label vis-opacity'; - this.opacityLabel.innerHTML = 'opacity:'; + return hammer; + }; + })); - this.newColorDiv = document.createElement('div'); - this.newColorDiv.className = 'vis-new-color'; - this.newColorDiv.innerHTML = 'new'; - this.initialColorDiv = document.createElement('div'); - this.initialColorDiv.className = 'vis-initial-color'; - this.initialColorDiv.innerHTML = 'initial'; +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { - this.cancelButton = document.createElement('div'); - this.cancelButton.className = 'vis-button vis-cancel'; - this.cancelButton.innerHTML = 'cancel'; - this.cancelButton.onclick = this._hide.bind(this, false); + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.4 - 2014-09-28 + * http://hammerjs.github.io/ + * + * Copyright (c) 2014 Jorik Tangelder; + * Licensed under the MIT license */ + (function(window, document, exportName, undefined) { + 'use strict'; - this.applyButton = document.createElement('div'); - this.applyButton.className = 'vis-button vis-apply'; - this.applyButton.innerHTML = 'apply'; - this.applyButton.onclick = this._apply.bind(this); + var VENDOR_PREFIXES = ['', 'webkit', 'moz', 'MS', 'ms', 'o']; + var TEST_ELEMENT = document.createElement('div'); - this.saveButton = document.createElement('div'); - this.saveButton.className = 'vis-button vis-save'; - this.saveButton.innerHTML = 'save'; - this.saveButton.onclick = this._save.bind(this); + var TYPE_FUNCTION = 'function'; - this.loadButton = document.createElement('div'); - this.loadButton.className = 'vis-button vis-load'; - this.loadButton.innerHTML = 'load last'; - this.loadButton.onclick = this._loadLast.bind(this); + var round = Math.round; + var abs = Math.abs; + var now = Date.now; - this.frame.appendChild(this.colorPickerDiv); - this.frame.appendChild(this.arrowDiv); - this.frame.appendChild(this.brightnessLabel); - this.frame.appendChild(this.brightnessDiv); - this.frame.appendChild(this.opacityLabel); - this.frame.appendChild(this.opacityDiv); - this.frame.appendChild(this.newColorDiv); - this.frame.appendChild(this.initialColorDiv); + /** + * set a timeout with a given scope + * @param {Function} fn + * @param {Number} timeout + * @param {Object} context + * @returns {number} + */ + function setTimeoutContext(fn, timeout, context) { + return setTimeout(bindFn(fn, context), timeout); + } - this.frame.appendChild(this.cancelButton); - this.frame.appendChild(this.applyButton); - this.frame.appendChild(this.saveButton); - this.frame.appendChild(this.loadButton); + /** + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ + function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; } - }, { - key: '_bindHammer', - - /** - * bind hammer to the color picker - * @private - */ - value: function _bindHammer() { - var _this = this; + return false; + } - this.drag = {}; - this.pinch = {}; - this.hammer = new Hammer(this.colorPickerCanvas); - this.hammer.get('pinch').set({ enable: true }); + /** + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ + function each(obj, iterator, context) { + var i; - hammerUtil.onTouch(this.hammer, function (event) { - _this._moveSelector(event); - }); - this.hammer.on('tap', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panstart', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panmove', function (event) { - _this._moveSelector(event); - }); - this.hammer.on('panend', function (event) { - _this._moveSelector(event); - }); + if (!obj) { + return; } - }, { - key: '_generateHueCircle', - /** - * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown. - * @private - */ - value: function _generateHueCircle() { - if (this.generated === false) { - var ctx = this.colorPickerCanvas.getContext('2d'); - if (this.pixelRation === undefined) { - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; } - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - - // clear the canvas - var w = this.colorPickerCanvas.clientWidth; - var h = this.colorPickerCanvas.clientHeight; - ctx.clearRect(0, 0, w, h); - - // draw hue circle - var x = undefined, - y = undefined, - hue = undefined, - sat = undefined; - this.centerCoordinates = { x: w * 0.5, y: h * 0.5 }; - this.r = 0.49 * w; - var angleConvert = 2 * Math.PI / 360; - var hfac = 1 / 360; - var sfac = 1 / this.r; - var rgb = undefined; - for (hue = 0; hue < 360; hue++) { - for (sat = 0; sat < this.r; sat++) { - x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue); - y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue); - rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1); - ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')'; - ctx.fillRect(x - 0.5, y - 0.5, 2, 2); - } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); } - ctx.strokeStyle = 'rgba(0,0,0,1)'; - ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); - ctx.stroke(); - - this.hueCircle = ctx.getImageData(0, 0, w, h); - } - this.generated = true; } - }, { - key: '_moveSelector', - - /** - * move the selector. This is called by hammer functions. - * - * @param event - * @private - */ - value: function _moveSelector(event) { - var rect = this.colorPickerDiv.getBoundingClientRect(); - var left = event.center.x - rect.left; - var top = event.center.y - rect.top; - - var centerY = 0.5 * this.colorPickerDiv.clientHeight; - var centerX = 0.5 * this.colorPickerDiv.clientWidth; - - var x = left - centerX; - var y = top - centerY; - - var angle = Math.atan2(x, y); - var radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX); - - var newTop = Math.cos(angle) * radius + centerY; - var newLeft = Math.sin(angle) * radius + centerX; - - this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px'; - this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px'; - - // set color - var h = angle / (2 * Math.PI); - h = h < 0 ? h + 1 : h; - var s = radius / this.r; - var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); - hsv.h = h; - hsv.s = s; - var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); - rgba['a'] = this.color.a; - this.color = rgba; + } - // update previews - this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; - this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; + /** + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge] + * @returns {Object} dest + */ + function extend(dest, src, merge) { + var keys = Object.keys(src); + var i = 0; + while (i < keys.length) { + if (!merge || (merge && dest[keys[i]] === undefined)) { + dest[keys[i]] = src[keys[i]]; + } + i++; } - }]); - - return ColorPicker; - })(); - - exports['default'] = ColorPicker; - module.exports = exports['default']; - -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, '__esModule', { - value: true - }); - - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var _sharedLabel = __webpack_require__(72); - - var _sharedLabel2 = _interopRequireDefault(_sharedLabel); + return dest; + } - var _nodesShapesBox = __webpack_require__(87); + /** + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ + function merge(dest, src) { + return extend(dest, src, true); + } - var _nodesShapesBox2 = _interopRequireDefault(_nodesShapesBox); + /** + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ + function inherit(child, base, properties) { + var baseP = base.prototype, + childP; - var _nodesShapesCircle = __webpack_require__(88); + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; - var _nodesShapesCircle2 = _interopRequireDefault(_nodesShapesCircle); + if (properties) { + extend(childP, properties); + } + } - var _nodesShapesCircularImage = __webpack_require__(89); + /** + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ + function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; + } - var _nodesShapesCircularImage2 = _interopRequireDefault(_nodesShapesCircularImage); + /** + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ + function boolOrFn(val, args) { + if (typeof val == TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + return val; + } - var _nodesShapesDatabase = __webpack_require__(90); + /** + * use the val2 when val1 is undefined + * @param {*} val1 + * @param {*} val2 + * @returns {*} + */ + function ifUndefined(val1, val2) { + return (val1 === undefined) ? val2 : val1; + } - var _nodesShapesDatabase2 = _interopRequireDefault(_nodesShapesDatabase); + /** + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + function addEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.addEventListener(type, handler, false); + }); + } - var _nodesShapesDiamond = __webpack_require__(91); + /** + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + function removeEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.removeEventListener(type, handler, false); + }); + } - var _nodesShapesDiamond2 = _interopRequireDefault(_nodesShapesDiamond); + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + function hasParent(node, parent) { + while (node) { + if (node == parent) { + return true; + } + node = node.parentNode; + } + return false; + } - var _nodesShapesDot = __webpack_require__(92); + /** + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ + function inStr(str, find) { + return str.indexOf(find) > -1; + } - var _nodesShapesDot2 = _interopRequireDefault(_nodesShapesDot); + /** + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ + function splitStr(str) { + return str.trim().split(/\s+/g); + } - var _nodesShapesEllipse = __webpack_require__(93); + /** + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ + function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + var i = 0; + while (i < src.length) { + if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) { + return i; + } + i++; + } + return -1; + } + } - var _nodesShapesEllipse2 = _interopRequireDefault(_nodesShapesEllipse); + /** + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ + function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + } - var _nodesShapesIcon = __webpack_require__(94); + /** + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ + function uniqueArray(src, key, sort) { + var results = []; + var values = []; + var i = 0; - var _nodesShapesIcon2 = _interopRequireDefault(_nodesShapesIcon); + while (i < src.length) { + var val = key ? src[i][key] : src[i]; + if (inArray(values, val) < 0) { + results.push(src[i]); + } + values[i] = val; + i++; + } - var _nodesShapesImage = __webpack_require__(95); + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort(function sortUniqueArray(a, b) { + return a[key] > b[key]; + }); + } + } - var _nodesShapesImage2 = _interopRequireDefault(_nodesShapesImage); + return results; + } - var _nodesShapesSquare = __webpack_require__(96); + /** + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ + function prefixed(obj, property) { + var prefix, prop; + var camelProp = property[0].toUpperCase() + property.slice(1); - var _nodesShapesSquare2 = _interopRequireDefault(_nodesShapesSquare); + var i = 0; + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = (prefix) ? prefix + camelProp : property; - var _nodesShapesStar = __webpack_require__(97); + if (prop in obj) { + return prop; + } + i++; + } + return undefined; + } - var _nodesShapesStar2 = _interopRequireDefault(_nodesShapesStar); + /** + * get a unique id + * @returns {number} uniqueId + */ + var _uniqueId = 1; + function uniqueId() { + return _uniqueId++; + } - var _nodesShapesText = __webpack_require__(98); + /** + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ + function getWindowForElement(element) { + var doc = element.ownerDocument; + return (doc.defaultView || doc.parentWindow); + } - var _nodesShapesText2 = _interopRequireDefault(_nodesShapesText); + var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; - var _nodesShapesTriangle = __webpack_require__(99); + var SUPPORT_TOUCH = ('ontouchstart' in window); + var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined; + var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); - var _nodesShapesTriangle2 = _interopRequireDefault(_nodesShapesTriangle); + var INPUT_TYPE_TOUCH = 'touch'; + var INPUT_TYPE_PEN = 'pen'; + var INPUT_TYPE_MOUSE = 'mouse'; + var INPUT_TYPE_KINECT = 'kinect'; - var _nodesShapesTriangleDown = __webpack_require__(100); + var COMPUTE_INTERVAL = 25; - var _nodesShapesTriangleDown2 = _interopRequireDefault(_nodesShapesTriangleDown); + var INPUT_START = 1; + var INPUT_MOVE = 2; + var INPUT_END = 4; + var INPUT_CANCEL = 8; - var _Validator = __webpack_require__(46); + var DIRECTION_NONE = 1; + var DIRECTION_LEFT = 2; + var DIRECTION_RIGHT = 4; + var DIRECTION_UP = 8; + var DIRECTION_DOWN = 16; - var _Validator2 = _interopRequireDefault(_Validator); + var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; + var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; + var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; - var util = __webpack_require__(1); + var PROPS_XY = ['x', 'y']; + var PROPS_CLIENT_XY = ['clientX', 'clientY']; /** - * @class Node - * A node. A node can be connected to other nodes via one or multiple edges. - * @param {object} options An object containing options for the node. All - * options are optional, except for the id. - * {number} id Id of the node. Required - * {string} label Text label for the node - * {number} x Horizontal position of the node - * {number} y Vertical position of the node - * {string} shape Node shape, available: - * "database", "circle", "ellipse", - * "box", "image", "text", "dot", - * "star", "triangle", "triangleDown", - * "square", "icon" - * {string} image An image url - * {string} title An title text, can be HTML - * {anytype} group A group name or number - * @param {Network.Images} imagelist A list with images. Only needed - * when the node has an image - * @param {Network.Groups} grouplist A list with groups. Needed for - * retrieving group options - * @param {Object} constants An object with default values for - * example for the color - * + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor */ + function Input(manager, callback) { + var self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; - var Node = (function () { - function Node(options, body, imagelist, grouplist, globalOptions) { - _classCallCheck(this, Node); - - this.options = util.bridgeObject(globalOptions); - this.body = body; - - this.edges = []; // all edges connected to this node - - // set defaults for the options - this.id = undefined; - this.imagelist = imagelist; - this.grouplist = grouplist; - - // state options - this.x = undefined; - this.y = undefined; - this.baseSize = this.options.size; - this.baseFontSize = this.options.font.size; - this.predefinedPosition = false; // used to check if initial fit should just take the range or approximate - this.selected = false; - this.hover = false; + // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + this.domHandler = function(ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; - this.labelModule = new _sharedLabel2['default'](this.body, this.options); - this.setOptions(options); - } + this.init(); - _createClass(Node, [{ - key: 'attachEdge', + } + Input.prototype = { /** - * Attach a edge to the node - * @param {Edge} edge + * should handle the inputEvent data and trigger the callback + * @virtual */ - value: function attachEdge(edge) { - if (this.edges.indexOf(edge) === -1) { - this.edges.push(edge); - } - } - }, { - key: 'detachEdge', + handler: function() { }, /** - * Detach a edge from the node - * @param {Edge} edge + * bind the events */ - value: function detachEdge(edge) { - var index = this.edges.indexOf(edge); - if (index != -1) { - this.edges.splice(index, 1); - } - } - }, { - key: 'togglePhysics', + init: function() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }, /** - * Enable or disable the physics. - * @param status + * unbind the events */ - value: function togglePhysics(status) { - this.options.physics = status; + destroy: function() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); } - }, { - key: 'setOptions', + }; - /** - * Set or overwrite options for the node - * @param {Object} options an object with options - * @param {Object} constants and object with default, global options - */ - value: function setOptions(options) { - if (!options) { - return; - } + /** + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ + function createInputInstance(manager) { + var Type; + var inputClass = manager.options.inputClass; - // basic options - if (options.id !== undefined) { - this.id = options.id; - } + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + return new (Type)(manager, inputHandler); + } - if (this.id === undefined) { - throw 'Node must have an id'; - } + /** + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ + function inputHandler(manager, eventType, input) { + var pointersLen = input.pointers.length; + var changedPointersLen = input.changedPointers.length; + var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0)); + var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0)); - if (options.x !== undefined) { - this.x = parseInt(options.x);this.predefinedPosition = true; - } - if (options.y !== undefined) { - this.y = parseInt(options.y);this.predefinedPosition = true; - } - if (options.size !== undefined) { - this.baseSize = options.size; - } - if (options.value !== undefined) { - options.value = parseInt(options.value); - } + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; - // this transforms all shorthands into fully defined options - Node.parseOptions(this.options, options, true); + if (isFirst) { + manager.session = {}; + } - // copy group options - if (typeof options.group === 'number' || typeof options.group === 'string' && options.group != '') { - var groupObj = this.grouplist.get(options.group); - util.deepExtend(this.options, groupObj); - // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. - this.options.color = util.parseColor(this.options.color); - } + // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + input.eventType = eventType; - // load the images - if (this.options.image !== undefined && this.options.image != '') { - if (this.imagelist) { - this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); - } else { - throw 'No imagelist provided'; - } - } + // compute scale, rotation etc + computeInputData(manager, input); - this.updateShape(); - this.updateLabelModule(); + // emit secret event + manager.emit('hammer.input', input); - // reset the size of the node, this can be changed - this._reset(); - } - }, { - key: 'updateLabelModule', - value: function updateLabelModule() { - if (this.options.label === undefined || this.options.label === null) { - this.options.label = ''; - } - this.labelModule.setOptions(this.options, true); - if (this.labelModule.baseSize !== undefined) { - this.baseFontSize = this.labelModule.baseSize; - } - } - }, { - key: 'updateShape', - value: function updateShape() { - // choose draw method depending on the shape - switch (this.options.shape) { - case 'box': - this.shape = new _nodesShapesBox2['default'](this.options, this.body, this.labelModule); - break; - case 'circle': - this.shape = new _nodesShapesCircle2['default'](this.options, this.body, this.labelModule); - break; - case 'circularImage': - this.shape = new _nodesShapesCircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); - break; - case 'database': - this.shape = new _nodesShapesDatabase2['default'](this.options, this.body, this.labelModule); - break; - case 'diamond': - this.shape = new _nodesShapesDiamond2['default'](this.options, this.body, this.labelModule); - break; - case 'dot': - this.shape = new _nodesShapesDot2['default'](this.options, this.body, this.labelModule); - break; - case 'ellipse': - this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); - break; - case 'icon': - this.shape = new _nodesShapesIcon2['default'](this.options, this.body, this.labelModule); - break; - case 'image': - this.shape = new _nodesShapesImage2['default'](this.options, this.body, this.labelModule, this.imageObj); - break; - case 'square': - this.shape = new _nodesShapesSquare2['default'](this.options, this.body, this.labelModule); - break; - case 'star': - this.shape = new _nodesShapesStar2['default'](this.options, this.body, this.labelModule); - break; - case 'text': - this.shape = new _nodesShapesText2['default'](this.options, this.body, this.labelModule); - break; - case 'triangle': - this.shape = new _nodesShapesTriangle2['default'](this.options, this.body, this.labelModule); - break; - case 'triangleDown': - this.shape = new _nodesShapesTriangleDown2['default'](this.options, this.body, this.labelModule); - break; - default: - this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); - break; - } - this._reset(); - } - }, { - key: 'select', + manager.recognize(input); + manager.session.prevInput = input; + } - /** - * select this node - */ - value: function select() { - this.selected = true; - this._reset(); - } - }, { - key: 'unselect', + /** + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ + function computeInputData(manager, input) { + var session = manager.session; + var pointers = input.pointers; + var pointersLength = pointers.length; - /** - * unselect this node - */ - value: function unselect() { - this.selected = false; - this._reset(); + // store the first input to calculate the distance and direction + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); } - }, { - key: '_reset', - /** - * Reset the calculated size of the node, forces it to recalculate its size - * @private - */ - value: function _reset() { - this.shape.width = undefined; - this.shape.height = undefined; + // to compute scale and rotation we need to store the multiple touches + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; } - }, { - key: 'getTitle', - /** - * get the title of this node. - * @return {string} title The title of the node, or undefined when no title - * has been set. - */ - value: function getTitle() { - return this.options.title; - } - }, { - key: 'distanceToBorder', + var firstInput = session.firstInput; + var firstMultiple = session.firstMultiple; + var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; - /** - * Calculate the distance to the border of the Node - * @param {CanvasRenderingContext2D} ctx - * @param {Number} angle Angle in radians - * @returns {number} distance Distance to the border in pixels - */ - value: function distanceToBorder(ctx, angle) { - return this.shape.distanceToBorder(ctx, angle); - } - }, { - key: 'isFixed', + var center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); - /** - * Check if this node has a fixed x and y position - * @return {boolean} true if fixed, false if not - */ - value: function isFixed() { - return this.options.fixed.x && this.options.fixed.y; - } - }, { - key: 'isSelected', + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; - /** - * check if this node is selecte - * @return {boolean} selected True if node is selected, else false - */ - value: function isSelected() { - return this.selected; - } - }, { - key: 'getValue', + computeIntervalInputData(session, input); - /** - * Retrieve the value of the node. Can be undefined - * @return {Number} value - */ - value: function getValue() { - return this.options.value; + // find the correct target + var target = manager.element; + if (hasParent(input.srcEvent.target, target)) { + target = input.srcEvent.target; } - }, { - key: 'setValueRange', + input.target = target; + } - /** - * Adjust the value range of the node. The node will adjust it's size - * based on its value. - * @param {Number} min - * @param {Number} max - */ - value: function setValueRange(min, max, total) { - if (this.options.value !== undefined) { - var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value); - var sizeDiff = this.options.scaling.max - this.options.scaling.min; - if (this.options.scaling.label.enabled === true) { - var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min; - this.options.font.size = this.options.scaling.label.min + scale * fontDiff; - } - this.options.size = this.options.scaling.min + scale * sizeDiff; - } else { - this.options.size = this.baseSize; - this.options.font.size = this.baseFontSize; - } - } - }, { - key: 'draw', + function computeDeltaXY(session, input) { + var center = input.center; + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevInput = session.prevInput || {}; - /** - * Draw this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - value: function draw(ctx) { - this.shape.draw(ctx, this.x, this.y, this.selected, this.hover); - } - }, { - key: 'resize', + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; - /** - * Recalculate the size of this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - value: function resize(ctx) { - this.shape.resize(ctx); + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; } - }, { - key: 'isOverlappingWith', - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top, right, bottom - * @return {boolean} True if location is located on node - */ - value: function isOverlappingWith(obj) { - return this.shape.left < obj.right && this.shape.left + this.shape.width > obj.left && this.shape.top < obj.bottom && this.shape.top + this.shape.height > obj.top; - } - }, { - key: 'isBoundingBoxOverlappingWith', + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); + } - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top, right, bottom - * @return {boolean} True if location is located on node - */ - value: function isBoundingBoxOverlappingWith(obj) { - return this.shape.boundingBox.left < obj.right && this.shape.boundingBox.right > obj.left && this.shape.boundingBox.top < obj.bottom && this.shape.boundingBox.bottom > obj.top; - } - }], [{ - key: 'parseOptions', + /** + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ + function computeIntervalInputData(session, input) { + var last = session.lastInterval || input, + deltaTime = input.timeStamp - last.timeStamp, + velocity, velocityX, velocityY, direction; - /** - * This process all possible shorthands in the new options and makes sure that the parentOptions are fully defined. - * Static so it can also be used by the handler. - * @param parentOptions - * @param newOptions - */ - value: function parseOptions(parentOptions, newOptions) { - var allowDeletion = arguments[2] === undefined ? false : arguments[2]; + if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + var deltaX = last.deltaX - input.deltaX; + var deltaY = last.deltaY - input.deltaY; - var fields = ['color', 'fixed', 'shadow']; - util.selectiveNotDeepExtend(fields, parentOptions, newOptions); + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); - // merge the shadow options into the parent. - util.mergeOptions(parentOptions, newOptions, 'shadow'); + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } - // individual shape newOptions - if (newOptions.color !== undefined && newOptions.color !== null) { - var parsedColor = util.parseColor(newOptions.color); - util.fillIfDefined(parentOptions.color, parsedColor); - } else if (allowDeletion === true) { - parentOptions.color = undefined; - delete parentOptions.color; - } + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; + } - if (newOptions.fixed !== undefined && newOptions.fixed !== null) { - if (typeof newOptions.fixed === 'boolean') { - parentOptions.fixed.x = newOptions.fixed; - parentOptions.fixed.y = newOptions.fixed; - } else { - if (newOptions.fixed.x !== undefined && typeof newOptions.fixed.x === 'boolean') { - parentOptions.fixed.x = newOptions.fixed.x; - } - if (newOptions.fixed.y !== undefined && typeof newOptions.fixed.y === 'boolean') { - parentOptions.fixed.y = newOptions.fixed.y; - } - } - } + /** + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ + function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + var pointers = []; + var i = 0; + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; } - }]); - return Node; - })(); + return { + timeStamp: now(), + pointers: pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; + } - exports['default'] = Node; - module.exports = exports['default']; + /** + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ + function getCenter(pointers) { + var pointersLength = pointers.length; -/***/ }, -/* 72 */ -/***/ function(module, exports, __webpack_require__) { + // no need to loop when only one touch + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } - 'use strict'; + var x = 0, y = 0, i = 0; + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } - Object.defineProperty(exports, '__esModule', { - value: true - }); + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; + } - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + /** + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ + function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; + } - function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } } + /** + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ + function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + if (abs(x) >= abs(y)) { + return x > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return y > 0 ? DIRECTION_UP : DIRECTION_DOWN; + } - var util = __webpack_require__(1); + /** + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ + function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; - var Label = (function () { - function Label(body, options) { - _classCallCheck(this, Label); + return Math.sqrt((x * x) + (y * y)); + } - this.body = body; + /** + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ + function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; + } - this.baseSize = undefined; - this.setOptions(options); - this.size = { top: 0, left: 0, width: 0, height: 0, yLine: 0 }; // could be cached - } + /** + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ + function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) - getAngle(start[1], start[0], PROPS_CLIENT_XY); + } - _createClass(Label, [{ - key: 'setOptions', - value: function setOptions(options) { - var allowDeletion = arguments[1] === undefined ? false : arguments[1]; + /** + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ + function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); + } - this.options = options; + var MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END + }; - if (options.label !== undefined) { - this.labelDirty = true; - } + var MOUSE_ELEMENT_EVENTS = 'mousedown'; + var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; - if (options.font !== undefined) { - Label.parseOptions(this.options.font, options, allowDeletion); - if (typeof options.font === 'string') { - this.baseSize = this.options.font.size; - } else if (typeof options.font === 'object') { - if (options.font.size !== undefined) { - this.baseSize = options.font.size; - } - } - } - } - }, { - key: 'draw', + /** + * Mouse events input + * @constructor + * @extends Input + */ + function MouseInput() { + this.evEl = MOUSE_ELEMENT_EVENTS; + this.evWin = MOUSE_WINDOW_EVENTS; + + this.allow = true; // used by Input.TouchMouse to disable mouse events + this.pressed = false; // mousedown state + + Input.apply(this, arguments); + } + inherit(MouseInput, Input, { /** - * Main function. This is called from anything that wants to draw a label. - * @param ctx - * @param x - * @param y - * @param selected - * @param baseline + * handle mouse events + * @param {Object} ev */ - value: function draw(ctx, x, y, selected) { - var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; + handler: function MEhandler(ev) { + var eventType = MOUSE_INPUT_MAP[ev.type]; - // if no label, return - if (this.options.label === undefined) return; + // on start we want to have the left mouse button down + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } - // check if we have to render the label - var viewFontSize = this.options.font.size * this.body.view.scale; - if (this.options.label && viewFontSize < this.options.scaling.label.drawThreshold - 1) return; + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } - // update the size cache if required - this.calculateLabelSize(ctx, selected, x, y, baseline); + // mouse must be down, and mouse events are allowed (see the TouchMouse input) + if (!this.pressed || !this.allow) { + return; + } - // create the fontfill background - this._drawBackground(ctx); - // draw text - this._drawText(ctx, selected, x, y, baseline); + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); } - }, { - key: '_drawBackground', + }); - /** - * Draws the label background - * @param {CanvasRenderingContext2D} ctx - * @private - */ - value: function _drawBackground(ctx) { - if (this.options.font.background !== undefined && this.options.font.background !== 'none') { - ctx.fillStyle = this.options.font.background; + var POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL + }; - var lineMargin = 2; + // in IE10 the pointer types is defined as an enum + var IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 + }; - switch (this.options.font.align) { - case 'middle': - ctx.fillRect(-this.size.width * 0.5, -this.size.height * 0.5, this.size.width, this.size.height); - break; - case 'top': - ctx.fillRect(-this.size.width * 0.5, -(this.size.height + lineMargin), this.size.width, this.size.height); - break; - case 'bottom': - ctx.fillRect(-this.size.width * 0.5, lineMargin, this.size.width, this.size.height); - break; - default: - ctx.fillRect(this.size.left, this.size.top, this.size.width, this.size.height); - break; - } - } - } - }, { - key: '_drawText', + var POINTER_ELEMENT_EVENTS = 'pointerdown'; + var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; - /** - * - * @param ctx - * @param x - * @param baseline - * @private - */ - value: function _drawText(ctx, selected, x, y) { - var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; + // IE10 has prefixed support, and case-sensitive + if (window.MSPointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; + } - var fontSize = this.options.font.size; - var viewFontSize = fontSize * this.body.view.scale; - // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) - if (viewFontSize >= this.options.scaling.label.maxVisible) { - fontSize = Number(this.options.scaling.label.maxVisible) / this.body.view.scale; - } + /** + * Pointer events input + * @constructor + * @extends Input + */ + function PointerEventInput() { + this.evEl = POINTER_ELEMENT_EVENTS; + this.evWin = POINTER_WINDOW_EVENTS; - var yLine = this.size.yLine; + Input.apply(this, arguments); - var _getColor = this._getColor(viewFontSize); + this.store = (this.manager.session.pointerEvents = []); + } - var _getColor2 = _slicedToArray(_getColor, 2); + inherit(PointerEventInput, Input, { + /** + * handle mouse events + * @param {Object} ev + */ + handler: function PEhandler(ev) { + var store = this.store; + var removePointer = false; - var fontColor = _getColor2[0]; - var strokeColor = _getColor2[1]; + var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; - var _setAlignment = this._setAlignment(ctx, x, yLine, baseline); + var isTouch = (pointerType == INPUT_TYPE_TOUCH); + + // get index of the event in the store + var storeIndex = inArray(store, ev.pointerId, 'pointerId'); - var _setAlignment2 = _slicedToArray(_setAlignment, 2); + // start and mouse must be down + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } - x = _setAlignment2[0]; - yLine = _setAlignment2[1]; + // it not found, so the pointer hasn't been down (so it's probably a hover) + if (storeIndex < 0) { + return; + } - // configure context for drawing the text - ctx.font = (selected ? 'bold ' : '') + fontSize + 'px ' + this.options.font.face; - ctx.fillStyle = fontColor; - ctx.textAlign = 'center'; + // update the event in the store + store[storeIndex] = ev; - // set the strokeWidth - if (this.options.font.strokeWidth > 0) { - ctx.lineWidth = this.options.font.strokeWidth; - ctx.strokeStyle = strokeColor; - ctx.lineJoin = 'round'; - } + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType: pointerType, + srcEvent: ev + }); - // draw the text - for (var i = 0; i < this.lineCount; i++) { - if (this.options.font.strokeWidth > 0) { - ctx.strokeText(this.lines[i], x, yLine); + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); } - ctx.fillText(this.lines[i], x, yLine); - yLine += fontSize; - } } - }, { - key: '_setAlignment', - value: function _setAlignment(ctx, x, yLine, baseline) { - // check for label alignment (for edges) - // TODO: make alignment for nodes - if (this.options.font.align !== 'horizontal') { - x = 0; - yLine = 0; + }); - var lineMargin = 2; - if (this.options.font.align === 'top') { - ctx.textBaseline = 'alphabetic'; - yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers - } else if (this.options.font.align === 'bottom') { - ctx.textBaseline = 'hanging'; - yLine += 2 * lineMargin; // distance from edge, required because we use hanging. Hanging has less difference between browsers - } else { - ctx.textBaseline = 'middle'; - } - } else { - ctx.textBaseline = baseline; - } + var SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL + }; - return [x, yLine]; - } - }, { - key: '_getColor', + var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; + var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; - /** - * fade in when relative scale is between threshold and threshold - 1. - * If the relative scale would be smaller than threshold -1 the draw function would have returned before coming here. - * - * @param viewFontSize - * @returns {*[]} - * @private - */ - value: function _getColor(viewFontSize) { - var fontColor = this.options.font.color || '#000000'; - var strokeColor = this.options.font.strokeColor || '#ffffff'; - if (viewFontSize <= this.options.scaling.label.drawThreshold) { - var opacity = Math.max(0, Math.min(1, 1 - (this.options.scaling.label.drawThreshold - viewFontSize))); - fontColor = util.overrideOpacity(fontColor, opacity); - strokeColor = util.overrideOpacity(strokeColor, opacity); - } - return [fontColor, strokeColor]; - } - }, { - key: 'getTextSize', + /** + * Touch events input + * @constructor + * @extends Input + */ + function SingleTouchInput() { + this.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + this.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + this.started = false; - /** - * - * @param ctx - * @param selected - * @returns {{width: number, height: number}} - */ - value: function getTextSize(ctx) { - var selected = arguments[1] === undefined ? false : arguments[1]; + Input.apply(this, arguments); + } - var size = { - width: this._processLabel(ctx, selected), - height: this.options.font.size * this.lineCount, - lineCount: this.lineCount - }; - return size; - } - }, { - key: 'calculateLabelSize', + inherit(SingleTouchInput, Input, { + handler: function TEhandler(ev) { + var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; - /** - * - * @param ctx - * @param selected - * @param x - * @param y - * @param baseline - */ - value: function calculateLabelSize(ctx, selected) { - var x = arguments[2] === undefined ? 0 : arguments[2]; - var y = arguments[3] === undefined ? 0 : arguments[3]; - var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; + // should we handle the touch events? + if (type === INPUT_START) { + this.started = true; + } - if (this.labelDirty === true) { - this.size.width = this._processLabel(ctx, selected); - } - this.size.height = this.options.font.size * this.lineCount; - this.size.left = x - this.size.width * 0.5; - this.size.top = y - this.size.height * 0.5; - this.size.yLine = y + (1 - this.lineCount) * 0.5 * this.options.font.size; - if (baseline === 'hanging') { - this.size.top += 0.5 * this.options.font.size; - this.size.top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers - this.size.yLine += 4; // distance from node - } + if (!this.started) { + return; + } - this.labelDirty = false; - } - }, { - key: '_processLabel', + var touches = normalizeSingleTouches.call(this, ev, type); - /** - * This calculates the width as well as explodes the label string and calculates the amount of lines. - * @param ctx - * @param selected - * @returns {number} - * @private - */ - value: function _processLabel(ctx, selected) { - var width = 0; - var lines = ['']; - var lineCount = 0; - if (this.options.label !== undefined) { - lines = String(this.options.label).split('\n'); - lineCount = lines.length; - ctx.font = (selected ? 'bold ' : '') + this.options.font.size + 'px ' + this.options.font.face; - width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; + // when done, reset the started state + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; } - } - this.lines = lines; - this.lineCount = lineCount; - return width; + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); } - }], [{ - key: 'parseOptions', - value: function parseOptions(parentOptions, newOptions) { - var allowDeletion = arguments[2] === undefined ? false : arguments[2]; + }); - if (typeof newOptions.font === 'string') { - var newOptionsArray = newOptions.font.split(' '); - parentOptions.size = newOptionsArray[0].replace('px', ''); - parentOptions.face = newOptionsArray[1]; - parentOptions.color = newOptionsArray[2]; - } else if (typeof newOptions.font === 'object') { - util.fillIfDefined(parentOptions, newOptions.font, allowDeletion); - } - parentOptions.size = Number(parentOptions.size); - } - }]); + /** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ + function normalizeSingleTouches(ev, type) { + var all = toArray(ev.touches); + var changed = toArray(ev.changedTouches); - return Label; - })(); + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } - exports['default'] = Label; - module.exports = exports['default']; + return [all, changed]; + } -/***/ }, -/* 73 */ -/***/ function(module, exports, __webpack_require__) { + var TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL + }; - "use strict"; + var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; - Object.defineProperty(exports, "__esModule", { - value: true - }); + /** + * Multi-user touch events input + * @constructor + * @extends Input + */ + function TouchInput() { + this.evTarget = TOUCH_TARGET_EVENTS; + this.targetIds = {}; - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + Input.apply(this, arguments); + } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + inherit(TouchInput, Input, { + handler: function MTEhandler(ev) { + var type = TOUCH_INPUT_MAP[ev.type]; + var touches = getTouches.call(this, ev, type); + if (!touches) { + return; + } - var BarnesHutSolver = (function () { - function BarnesHutSolver(body, physicsBody, options) { - _classCallCheck(this, BarnesHutSolver); + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } + }); - this.body = body; - this.physicsBody = physicsBody; - this.barnesHutTree; - this.setOptions(options); - } + /** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ + function getTouches(ev, type) { + var allTouches = toArray(ev.touches); + var targetIds = this.targetIds; - _createClass(BarnesHutSolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; - this.thetaInversed = 1 / this.options.theta; + // when there is only one touch, the process can be simplified + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; } - }, { - key: "solve", - - /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. - * The Barnes Hut method is used to speed up this N-body simulation. - * - * @private - */ - value: function solve() { - if (this.options.gravitationalConstant != 0) { - var node; - var nodes = this.body.nodes; - var nodeIndices = this.physicsBody.physicsNodeIndices; - var nodeCount = nodeIndices.length; - // create the tree - var barnesHutTree = this._formBarnesHutTree(nodes, nodeIndices); + var i, + targetTouches, + changedTouches = toArray(ev.changedTouches), + changedTargetTouches = [], + target = this.target; - // for debugging - this.barnesHutTree = barnesHutTree; + // get target touches from touches + targetTouches = allTouches.filter(function(touch) { + return hasParent(touch.target, target); + }); - // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - // starting with root is irrelevant, it never passes the BarnesHutSolver condition - this._getForceContribution(barnesHutTree.root.children.NW, node); - this._getForceContribution(barnesHutTree.root.children.NE, node); - this._getForceContribution(barnesHutTree.root.children.SW, node); - this._getForceContribution(barnesHutTree.root.children.SE, node); - } + // collect touches + if (type === INPUT_START) { + i = 0; + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; } - } } - }, { - key: "_getForceContribution", - - /** - * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. - * If a region contains a single node, we check if it is not itself, then we apply the force. - * - * @param parentBranch - * @param node - * @private - */ - value: function _getForceContribution(parentBranch, node) { - // we get no force contribution from an empty region - if (parentBranch.childrenCount > 0) { - var dx, dy, distance; - // get the distance from the center of mass to the node. - dx = parentBranch.centerOfMass.x - node.x; - dy = parentBranch.centerOfMass.y - node.y; - distance = Math.sqrt(dx * dx + dy * dy); + // filter changed touches to only contain touches that exist in the collected target ids + i = 0; + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } - // BarnesHutSolver condition - // original condition : s/d < theta = passed === d/s > 1/theta = passed - // calcSize = 1/s --> d * 1/s > 1/theta = passed - if (distance * parentBranch.calcSize > this.thetaInversed) { - this._calculateForces(distance, dx, dy, node, parentBranch); - } else { - // Did not pass the condition, go into children if available - if (parentBranch.childrenCount === 4) { - this._getForceContribution(parentBranch.children.NW, node); - this._getForceContribution(parentBranch.children.NE, node); - this._getForceContribution(parentBranch.children.SW, node); - this._getForceContribution(parentBranch.children.SE, node); - } else { - // parentBranch must have only one node, if it was empty we wouldnt be here - if (parentBranch.children.data.id != node.id) { - // if it is not self - this._calculateForces(distance, dx, dy, node, parentBranch); - } - } + // cleanup removed touches + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; } - } + i++; } - }, { - key: "_calculateForces", - - /** - * Calculate the forces based on the distance. - * - * @param distance - * @param dx - * @param dy - * @param node - * @param parentBranch - * @private - */ - value: function _calculateForces(distance, dx, dy, node, parentBranch) { - // duplicate code to reduce function calls to speed up program - if (distance === 0) { - distance = 0.1 * Math.random(); - dx = distance; - } - var gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - this.physicsBody.forces[node.id].x += fx; - this.physicsBody.forces[node.id].y += fy; + if (!changedTargetTouches.length) { + return; } - }, { - key: "_formBarnesHutTree", - - /** - * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. - * - * @param nodes - * @param nodeIndices - * @private - */ - value: function _formBarnesHutTree(nodes, nodeIndices) { - var node; - var nodeCount = nodeIndices.length; - var minX = Number.MAX_VALUE, - minY = Number.MAX_VALUE, - maxX = -Number.MAX_VALUE, - maxY = -Number.MAX_VALUE; + return [ + // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), + changedTargetTouches + ]; + } - // get the range of the nodes - for (var i = 0; i < nodeCount; i++) { - var x = nodes[nodeIndices[i]].x; - var y = nodes[nodeIndices[i]].y; - if (nodes[nodeIndices[i]].options.mass > 0) { - if (x < minX) { - minX = x; - } - if (x > maxX) { - maxX = x; - } - if (y < minY) { - minY = y; - } - if (y > maxY) { - maxY = y; - } - } - } - // make the range a square - var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y - if (sizeDiff > 0) { - minY -= 0.5 * sizeDiff; - maxY += 0.5 * sizeDiff; - } // xSize > ySize - else { - minX += 0.5 * sizeDiff; - maxX -= 0.5 * sizeDiff; - } // xSize < ySize + /** + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ + function TouchMouseInput() { + Input.apply(this, arguments); - var minimumTreeSize = 0.00001; - var rootSize = Math.max(minimumTreeSize, Math.abs(maxX - minX)); - var halfRootSize = 0.5 * rootSize; - var centerX = 0.5 * (minX + maxX), - centerY = 0.5 * (minY + maxY); + var handler = bindFn(this.handler, this); + this.touch = new TouchInput(this.manager, handler); + this.mouse = new MouseInput(this.manager, handler); + } - // construct the barnesHutTree - var barnesHutTree = { - root: { - centerOfMass: { x: 0, y: 0 }, - mass: 0, - range: { - minX: centerX - halfRootSize, maxX: centerX + halfRootSize, - minY: centerY - halfRootSize, maxY: centerY + halfRootSize - }, - size: rootSize, - calcSize: 1 / rootSize, - children: { data: null }, - maxWidth: 0, - level: 0, - childrenCount: 4 + inherit(TouchMouseInput, Input, { + /** + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + handler: function TMEhandler(manager, inputEvent, inputData) { + var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH), + isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE); + + // when we're in a touch event, so block all upcoming mouse events + // most mobile browser also emit mouseevents, right after touchstart + if (isTouch) { + this.mouse.allow = false; + } else if (isMouse && !this.mouse.allow) { + return; } - }; - this._splitBranch(barnesHutTree.root); - // place the nodes one by one recursively - for (i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - this._placeInTree(barnesHutTree.root, node); + // reset the allowMouse when we're done + if (inputEvent & (INPUT_END | INPUT_CANCEL)) { + this.mouse.allow = true; } - } - // make global - return barnesHutTree; - } - }, { - key: "_updateBranchMass", + this.callback(manager, inputEvent, inputData); + }, /** - * this updates the mass of a branch. this is increased by adding a node. - * - * @param parentBranch - * @param node - * @private + * remove the event listeners */ - value: function _updateBranchMass(parentBranch, node) { - var totalMass = parentBranch.mass + node.options.mass; - var totalMassInv = 1 / totalMass; + destroy: function destroy() { + this.touch.destroy(); + this.mouse.destroy(); + } + }); - parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; - parentBranch.centerOfMass.x *= totalMassInv; + var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); + var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; - parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; - parentBranch.centerOfMass.y *= totalMassInv; + // magical touchAction value + var TOUCH_ACTION_COMPUTE = 'compute'; + var TOUCH_ACTION_AUTO = 'auto'; + var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented + var TOUCH_ACTION_NONE = 'none'; + var TOUCH_ACTION_PAN_X = 'pan-x'; + var TOUCH_ACTION_PAN_Y = 'pan-y'; - parentBranch.mass = totalMass; - var biggestSize = Math.max(Math.max(node.height, node.radius), node.width); - parentBranch.maxWidth = parentBranch.maxWidth < biggestSize ? biggestSize : parentBranch.maxWidth; - } - }, { - key: "_placeInTree", + /** + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ + function TouchAction(manager, value) { + this.manager = manager; + this.set(value); + } + TouchAction.prototype = { /** - * determine in which branch the node will be placed. - * - * @param parentBranch - * @param node - * @param skipMassUpdate - * @private + * set the touchAction value on the element or enable the polyfill + * @param {String} value */ - value: function _placeInTree(parentBranch, node, skipMassUpdate) { - if (skipMassUpdate != true || skipMassUpdate === undefined) { - // update the mass of the branch. - this._updateBranchMass(parentBranch, node); - } - - if (parentBranch.children.NW.range.maxX > node.x) { - // in NW or SW - if (parentBranch.children.NW.range.maxY > node.y) { - // in NW - this._placeInRegion(parentBranch, node, "NW"); - } else { - // in SW - this._placeInRegion(parentBranch, node, "SW"); + set: function(value) { + // find out the touch-action by the event handlers + if (value == TOUCH_ACTION_COMPUTE) { + value = this.compute(); } - } else { - // in NE or SE - if (parentBranch.children.NW.range.maxY > node.y) { - // in NE - this._placeInRegion(parentBranch, node, "NE"); - } else { - // in SE - this._placeInRegion(parentBranch, node, "SE"); + + if (NATIVE_TOUCH_ACTION) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; } - } - } - }, { - key: "_placeInRegion", + this.actions = value.toLowerCase().trim(); + }, /** - * actually place the node in a region (or branch) - * - * @param parentBranch - * @param node - * @param region - * @private + * just re-set the touchAction value */ - value: function _placeInRegion(parentBranch, node, region) { - switch (parentBranch.children[region].childrenCount) { - case 0: - // place node here - parentBranch.children[region].children.data = node; - parentBranch.children[region].childrenCount = 1; - this._updateBranchMass(parentBranch.children[region], node); - break; - case 1: - // convert into children - // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) - // we move one node a pixel and we do not put it in the tree. - if (parentBranch.children[region].children.data.x === node.x && parentBranch.children[region].children.data.y === node.y) { - node.x += Math.random(); - node.y += Math.random(); - } else { - this._splitBranch(parentBranch.children[region]); - this._placeInTree(parentBranch.children[region], node); - } - break; - case 4: - // place in branch - this._placeInTree(parentBranch.children[region], node); - break; - } - } - }, { - key: "_splitBranch", + update: function() { + this.set(this.manager.options.touchAction); + }, /** - * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch - * after the split is complete. - * - * @param parentBranch - * @private + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value */ - value: function _splitBranch(parentBranch) { - // if the branch is shaded with a node, replace the node in the new subset. - var containedNode = null; - if (parentBranch.childrenCount === 1) { - containedNode = parentBranch.children.data; - parentBranch.mass = 0; - parentBranch.centerOfMass.x = 0; - parentBranch.centerOfMass.y = 0; - } - parentBranch.childrenCount = 4; - parentBranch.children.data = null; - this._insertRegion(parentBranch, "NW"); - this._insertRegion(parentBranch, "NE"); - this._insertRegion(parentBranch, "SW"); - this._insertRegion(parentBranch, "SE"); - - if (containedNode != null) { - this._placeInTree(parentBranch, containedNode); - } - } - }, { - key: "_insertRegion", + compute: function() { + var actions = []; + each(this.manager.recognizers, function(recognizer) { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + }, /** - * This function subdivides the region into four new segments. - * Specifically, this inserts a single new segment. - * It fills the children section of the parentBranch - * - * @param parentBranch - * @param region - * @param parentRange - * @private + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input */ - value: function _insertRegion(parentBranch, region) { - var minX, maxX, minY, maxY; - var childSize = 0.5 * parentBranch.size; - switch (region) { - case "NW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "NE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "SW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - case "SE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - } + preventDefaults: function(input) { + // not needed with native support for the touchAction property + if (NATIVE_TOUCH_ACTION) { + return; + } - parentBranch.children[region] = { - centerOfMass: { x: 0, y: 0 }, - mass: 0, - range: { minX: minX, maxX: maxX, minY: minY, maxY: maxY }, - size: 0.5 * parentBranch.size, - calcSize: 2 * parentBranch.calcSize, - children: { data: null }, - maxWidth: 0, - level: parentBranch.level + 1, - childrenCount: 0 - }; - } - }, { - key: "_debug", + var srcEvent = input.srcEvent; + var direction = input.offsetDirection; - //--------------------------- DEBUGGING BELOW ---------------------------// + // if the touch action did prevented once this session + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + var actions = this.actions; + var hasNone = inStr(actions, TOUCH_ACTION_NONE); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + + if (hasNone || + (hasPanY && direction & DIRECTION_HORIZONTAL) || + (hasPanX && direction & DIRECTION_VERTICAL)) { + return this.preventSrc(srcEvent); + } + }, /** - * This function is for debugging purposed, it draws the tree. - * - * @param ctx - * @param color - * @private + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent */ - value: function _debug(ctx, color) { - if (this.barnesHutTree !== undefined) { + preventSrc: function(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + } + }; - ctx.lineWidth = 1; + /** + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ + function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } - this._drawBranch(this.barnesHutTree.root, ctx, color); - } + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + + // pan-x and pan-y can be combined + if (hasPanX && hasPanY) { + return TOUCH_ACTION_PAN_X + ' ' + TOUCH_ACTION_PAN_Y; } - }, { - key: "_drawBranch", - /** - * This function is for debugging purposes. It draws the branches recursively. - * - * @param branch - * @param ctx - * @param color - * @private - */ - value: function _drawBranch(branch, ctx, color) { - if (color === undefined) { - color = "#FF0000"; - } + // pan-x OR pan-y + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } - if (branch.childrenCount === 4) { - this._drawBranch(branch.children.NW, ctx); - this._drawBranch(branch.children.NE, ctx); - this._drawBranch(branch.children.SE, ctx); - this._drawBranch(branch.children.SW, ctx); - } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(branch.range.minX, branch.range.minY); - ctx.lineTo(branch.range.maxX, branch.range.minY); - ctx.stroke(); + // manipulation + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } - ctx.beginPath(); - ctx.moveTo(branch.range.maxX, branch.range.minY); - ctx.lineTo(branch.range.maxX, branch.range.maxY); - ctx.stroke(); + return TOUCH_ACTION_AUTO; + } - ctx.beginPath(); - ctx.moveTo(branch.range.maxX, branch.range.maxY); - ctx.lineTo(branch.range.minX, branch.range.maxY); - ctx.stroke(); + /** + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ + var STATE_POSSIBLE = 1; + var STATE_BEGAN = 2; + var STATE_CHANGED = 4; + var STATE_ENDED = 8; + var STATE_RECOGNIZED = STATE_ENDED; + var STATE_CANCELLED = 16; + var STATE_FAILED = 32; - ctx.beginPath(); - ctx.moveTo(branch.range.minX, branch.range.maxY); - ctx.lineTo(branch.range.minX, branch.range.minY); - ctx.stroke(); + /** + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ + function Recognizer(options) { + this.id = uniqueId(); - /* - if (branch.mass > 0) { - ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); - ctx.stroke(); - } - */ - } - }]); + this.manager = null; + this.options = merge(options || {}, this.defaults); - return BarnesHutSolver; - })(); + // default is enable true + this.options.enable = ifUndefined(this.options.enable, true); - exports["default"] = BarnesHutSolver; - module.exports = exports["default"]; + this.state = STATE_POSSIBLE; -/***/ }, -/* 74 */ -/***/ function(module, exports, __webpack_require__) { + this.simultaneous = {}; + this.requireFail = []; + } - "use strict"; + Recognizer.prototype = { + /** + * @virtual + * @type {Object} + */ + defaults: {}, - Object.defineProperty(exports, "__esModule", { - value: true - }); + /** + * set options + * @param {Object} options + * @return {Recognizer} + */ + set: function(options) { + extend(this.options, options); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + // also update the touchAction, in case something changed about the directions/enabled state + this.manager && this.manager.touchAction.update(); + return this; + }, - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + /** + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + recognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } - var RepulsionSolver = (function () { - function RepulsionSolver(body, physicsBody, options) { - _classCallCheck(this, RepulsionSolver); + var simultaneous = this.simultaneous; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + return this; + }, - this.body = body; - this.physicsBody = physicsBody; - this.setOptions(options); - } + /** + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRecognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + }, + + /** + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + requireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + var requireFail = this.requireFail; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + return this; + }, + + /** + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRequireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + var index = inArray(this.requireFail, otherRecognizer); + if (index > -1) { + this.requireFail.splice(index, 1); + } + return this; + }, - _createClass(RepulsionSolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; - } - }, { - key: "solve", + /** + * has require failures boolean + * @returns {boolean} + */ + hasRequireFailures: function() { + return this.requireFail.length > 0; + }, /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. - * - * @private + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} */ - value: function solve() { - var dx, dy, distance, fx, fy, repulsingForce, node1, node2; + canRecognizeWith: function(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + }, - var nodes = this.body.nodes; - var nodeIndices = this.physicsBody.physicsNodeIndices; - var forces = this.physicsBody.forces; + /** + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + emit: function(input) { + var self = this; + var state = this.state; - // repulsing forces between nodes - var nodeDistance = this.options.nodeDistance; + function emit(withState) { + self.manager.emit(self.options.event + (withState ? stateStr(state) : ''), input); + } - // approximation constants - var a = -2 / 3 / nodeDistance; - var b = 4 / 3; + // 'panstart' and 'panmove' + if (state < STATE_ENDED) { + emit(true); + } - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j - for (var i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (var j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; + emit(); // simple 'eventName' events - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + // panend and pancancel + if (state >= STATE_ENDED) { + emit(true); + } + }, - // same condition as BarnesHutSolver, making sure nodes are never 100% overlapping. - if (distance === 0) { - distance = 0.1 * Math.random(); - dx = distance; - } + /** + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + tryEmit: function(input) { + if (this.canEmit()) { + return this.emit(input); + } + // it's failing anyway + this.state = STATE_FAILED; + }, - if (distance < 2 * nodeDistance) { - if (distance < 0.5 * nodeDistance) { - repulsingForce = 1; - } else { - repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / nodeDistance - 1) * steepness)) + /** + * can we emit? + * @returns {boolean} + */ + canEmit: function() { + var i = 0; + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; } - repulsingForce = repulsingForce / distance; + i++; + } + return true; + }, - fx = dx * repulsingForce; - fy = dy * repulsingForce; + /** + * update the recognizer + * @param {Object} inputData + */ + recognize: function(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + var inputDataClone = extend({}, inputData); - forces[node1.id].x -= fx; - forces[node1.id].y -= fy; - forces[node2.id].x += fx; - forces[node2.id].y += fy; - } + // is is enabled and allow recognizing? + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; } - } - } - }]); - - return RepulsionSolver; - })(); - exports["default"] = RepulsionSolver; - module.exports = exports["default"]; + // reset when we've reached the end + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } -/***/ }, -/* 75 */ -/***/ function(module, exports, __webpack_require__) { + this.state = this.process(inputDataClone); - "use strict"; + // the recognizer has recognized a gesture + // so trigger an event + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + }, - Object.defineProperty(exports, "__esModule", { - value: true - }); + /** + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {Const} STATE + */ + process: function(inputData) { }, // jshint ignore:line - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + /** + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + getTouchAction: function() { }, - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + /** + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + reset: function() { } + }; - var HierarchicalRepulsionSolver = (function () { - function HierarchicalRepulsionSolver(body, physicsBody, options) { - _classCallCheck(this, HierarchicalRepulsionSolver); + /** + * get a usable string, used as event postfix + * @param {Const} state + * @returns {String} state + */ + function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + return ''; + } - this.body = body; - this.physicsBody = physicsBody; - this.setOptions(options); - } + /** + * direction cons to string + * @param {Const} direction + * @returns {String} + */ + function directionStr(direction) { + if (direction == DIRECTION_DOWN) { + return 'down'; + } else if (direction == DIRECTION_UP) { + return 'up'; + } else if (direction == DIRECTION_LEFT) { + return 'left'; + } else if (direction == DIRECTION_RIGHT) { + return 'right'; + } + return ''; + } - _createClass(HierarchicalRepulsionSolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; + /** + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ + function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + var manager = recognizer.manager; + if (manager) { + return manager.get(otherRecognizer); } - }, { - key: "solve", + return otherRecognizer; + } + + /** + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ + function AttrRecognizer() { + Recognizer.apply(this, arguments); + } + inherit(AttrRecognizer, Recognizer, { /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. - * - * @private + * @namespace + * @memberof AttrRecognizer */ - value: function solve() { - var dx, dy, distance, fx, fy, repulsingForce, node1, node2, i, j; - - var nodes = this.body.nodes; - var nodeIndices = this.physicsBody.physicsNodeIndices; - var forces = this.physicsBody.forces; + defaults: { + /** + * @type {Number} + * @default 1 + */ + pointers: 1 + }, - // repulsing forces between nodes - var nodeDistance = this.options.nodeDistance; + /** + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + attrTest: function(input) { + var optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + }, - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; + /** + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + process: function(input) { + var state = this.state; + var eventType = input.eventType; - // nodes only affect nodes on their level - if (node1.level === node2.level) { - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + var isValid = this.attrTest(input); - var steepness = 0.05; - if (distance < nodeDistance) { - repulsingForce = -Math.pow(steepness * distance, 2) + Math.pow(steepness * nodeDistance, 2); - } else { - repulsingForce = 0; - } - // normalize force with - if (distance === 0) { - distance = 0.01; - } else { - repulsingForce = repulsingForce / distance; + // on cancel input and we've recognized before, return STATE_CANCELLED + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; } - fx = dx * repulsingForce; - fy = dy * repulsingForce; - - forces[node1.id].x -= fx; - forces[node1.id].y -= fy; - forces[node2.id].x += fx; - forces[node2.id].y += fy; - } + return state | STATE_CHANGED; } - } + return STATE_FAILED; } - }]); + }); - return HierarchicalRepulsionSolver; - })(); + /** + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + function PanRecognizer() { + AttrRecognizer.apply(this, arguments); - exports["default"] = HierarchicalRepulsionSolver; - module.exports = exports["default"]; + this.pX = null; + this.pY = null; + } -/***/ }, -/* 76 */ -/***/ function(module, exports, __webpack_require__) { + inherit(PanRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof PanRecognizer + */ + defaults: { + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL + }, - "use strict"; + getTouchAction: function() { + var direction = this.options.direction; + var actions = []; + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + return actions; + }, - Object.defineProperty(exports, "__esModule", { - value: true - }); + directionTest: function(input) { + var options = this.options; + var hasMoved = true; + var distance = input.distance; + var direction = input.direction; + var x = input.deltaX; + var y = input.deltaY; - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + // lock to axis? + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x != this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y != this.pY; + distance = Math.abs(input.deltaY); + } + } + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + }, - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + attrTest: function(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && + (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input))); + }, - var SpringSolver = (function () { - function SpringSolver(body, physicsBody, options) { - _classCallCheck(this, SpringSolver); + emit: function(input) { + this.pX = input.deltaX; + this.pY = input.deltaY; - this.body = body; - this.physicsBody = physicsBody; - this.setOptions(options); - } + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } - _createClass(SpringSolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; + this._super.emit.call(this, input); } - }, { - key: "solve", + }); + + /** + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ + function PinchRecognizer() { + AttrRecognizer.apply(this, arguments); + } + inherit(PinchRecognizer, AttrRecognizer, { /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private + * @namespace + * @memberof PinchRecognizer */ - value: function solve() { - var edgeLength, edge; - var edgeIndices = this.physicsBody.physicsEdgeIndices; - var edges = this.body.edges; + defaults: { + event: 'pinch', + threshold: 0, + pointers: 2 + }, - // forces caused by the edges, modelled as springs - for (var i = 0; i < edgeIndices.length; i++) { - edge = edges[edgeIndices[i]]; - if (edge.connected === true && edge.toId !== edge.fromId) { - // only calculate forces if nodes are in the same sector - if (this.body.nodes[edge.toId] !== undefined && this.body.nodes[edge.fromId] !== undefined) { - if (edge.edgeType.via !== undefined) { - edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length; - var node1 = edge.to; - var node2 = edge.edgeType.via; - var node3 = edge.from; + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } else { - // the * 1.5 is here so the edge looks as large as a smooth edge. It does not initially because the smooth edges use - // the support nodes which exert a repulsive force on the to and from nodes, making the edge appear larger. - edgeLength = edge.options.length === undefined ? this.options.springLength * 1.5 : edge.options.length; - this._calculateSpringForce(edge.from, edge.to, edgeLength); - } - } + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + }, + + emit: function(input) { + this._super.emit.call(this, input); + if (input.scale !== 1) { + var inOut = input.scale < 1 ? 'in' : 'out'; + this.manager.emit(this.options.event + inOut, input); } - } } - }, { - key: "_calculateSpringForce", - - /** - * This is the code actually performing the calculation for the function above. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private - */ - value: function _calculateSpringForce(node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; + }); - dx = node1.x - node2.x; - dy = node1.y - node2.y; - distance = Math.sqrt(dx * dx + dy * dy); - distance = distance === 0 ? 0.01 : distance; + /** + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ + function PressRecognizer() { + Recognizer.apply(this, arguments); - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.options.springConstant * (edgeLength - distance) / distance; + this._timer = null; + this._input = null; + } - fx = dx * springForce; - fy = dy * springForce; + inherit(PressRecognizer, Recognizer, { + /** + * @namespace + * @memberof PressRecognizer + */ + defaults: { + event: 'press', + pointers: 1, + time: 500, // minimal time of the pointer to be pressed + threshold: 5 // a minimal movement is ok, but keep it low + }, - // handle the case where one node is not part of the physcis - if (this.physicsBody.forces[node1.id] !== undefined) { - this.physicsBody.forces[node1.id].x += fx; - this.physicsBody.forces[node1.id].y += fy; - } + getTouchAction: function() { + return [TOUCH_ACTION_AUTO]; + }, - if (this.physicsBody.forces[node2.id] !== undefined) { - this.physicsBody.forces[node2.id].x -= fx; - this.physicsBody.forces[node2.id].y -= fy; - } - } - }]); + process: function(input) { + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTime = input.deltaTime > options.time; - return SpringSolver; - })(); + this._input = input; - exports["default"] = SpringSolver; - module.exports = exports["default"]; + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.time, this); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + return STATE_FAILED; + }, -/***/ }, -/* 77 */ -/***/ function(module, exports, __webpack_require__) { + reset: function() { + clearTimeout(this._timer); + }, - "use strict"; + emit: function(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } - Object.defineProperty(exports, "__esModule", { - value: true + if (input && (input.eventType & INPUT_END)) { + this.manager.emit(this.options.event + 'up', input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + } }); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + /** + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ + function RotateRecognizer() { + AttrRecognizer.apply(this, arguments); + } - var HierarchicalSpringSolver = (function () { - function HierarchicalSpringSolver(body, physicsBody, options) { - _classCallCheck(this, HierarchicalSpringSolver); + inherit(RotateRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof RotateRecognizer + */ + defaults: { + event: 'rotate', + threshold: 0, + pointers: 2 + }, - this.body = body; - this.physicsBody = physicsBody; - this.setOptions(options); - } + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, - _createClass(HierarchicalSpringSolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); } - }, { - key: "solve", + }); + /** + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + function SwipeRecognizer() { + AttrRecognizer.apply(this, arguments); + } + + inherit(SwipeRecognizer, AttrRecognizer, { /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private + * @namespace + * @memberof SwipeRecognizer */ - value: function solve() { - var edgeLength, edge; - var dx, dy, fx, fy, springForce, distance; - var edges = this.body.edges; - var factor = 0.5; + defaults: { + event: 'swipe', + threshold: 10, + velocity: 0.65, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1 + }, - var edgeIndices = this.physicsBody.physicsEdgeIndices; - var nodeIndices = this.physicsBody.physicsNodeIndices; - var forces = this.physicsBody.forces; + getTouchAction: function() { + return PanRecognizer.prototype.getTouchAction.call(this); + }, - // initialize the spring force counters - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - forces[nodeId].springFx = 0; - forces[nodeId].springFy = 0; - } + attrTest: function(input) { + var direction = this.options.direction; + var velocity; - // forces caused by the edges, modelled as springs - for (var i = 0; i < edgeIndices.length; i++) { - edge = edges[edgeIndices[i]]; - if (edge.connected === true) { - edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length; + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.velocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.velocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.velocityY; + } - dx = edge.from.x - edge.to.x; - dy = edge.from.y - edge.to.y; - distance = Math.sqrt(dx * dx + dy * dy); - distance = distance === 0 ? 0.01 : distance; + return this._super.attrTest.call(this, input) && + direction & input.direction && + input.distance > this.options.threshold && + abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + }, - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.options.springConstant * (edgeLength - distance) / distance; + emit: function(input) { + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } - fx = dx * springForce; - fy = dy * springForce; + this.manager.emit(this.options.event, input); + } + }); - if (edge.to.level != edge.from.level) { - forces[edge.toId].springFx -= fx; - forces[edge.toId].springFy -= fy; - forces[edge.fromId].springFx += fx; - forces[edge.fromId].springFy += fy; - } else { - forces[edge.toId].x -= factor * fx; - forces[edge.toId].y -= factor * fy; - forces[edge.fromId].x += factor * fx; - forces[edge.fromId].y += factor * fy; - } - } - } + /** + * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ + function TapRecognizer() { + Recognizer.apply(this, arguments); - // normalize spring forces - var springForce = 1; - var springFx, springFy; - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - springFx = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFx)); - springFy = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFy)); + // previous time and center, + // used for tap counting + this.pTime = false; + this.pCenter = false; - forces[nodeId].x += springFx; - forces[nodeId].y += springFy; - } + this._timer = null; + this._input = null; + this.count = 0; + } - // retain energy balance - var totalFx = 0; - var totalFy = 0; - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - totalFx += forces[nodeId].x; - totalFy += forces[nodeId].y; - } - var correctionFx = totalFx / nodeIndices.length; - var correctionFy = totalFy / nodeIndices.length; + inherit(TapRecognizer, Recognizer, { + /** + * @namespace + * @memberof PinchRecognizer + */ + defaults: { + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, // max time between the multi-tap taps + time: 250, // max time of the pointer to be down (like finger on the screen) + threshold: 2, // a minimal movement is ok, but keep it low + posThreshold: 10 // a multi-tap can be a bit off the initial position + }, - for (var i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - forces[nodeId].x -= correctionFx; - forces[nodeId].y -= correctionFy; - } - } - }]); + getTouchAction: function() { + return [TOUCH_ACTION_MANIPULATION]; + }, - return HierarchicalSpringSolver; - })(); + process: function(input) { + var options = this.options; - exports["default"] = HierarchicalSpringSolver; - module.exports = exports["default"]; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTouchTime = input.deltaTime < options.time; -/***/ }, -/* 78 */ -/***/ function(module, exports, __webpack_require__) { + this.reset(); - "use strict"; + if ((input.eventType & INPUT_START) && (this.count === 0)) { + return this.failTimeout(); + } - Object.defineProperty(exports, "__esModule", { - value: true - }); + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (validMovement && validTouchTime && validPointers) { + if (input.eventType != INPUT_END) { + return this.failTimeout(); + } - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true; + var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + this.pTime = input.timeStamp; + this.pCenter = input.center; - var CentralGravitySolver = (function () { - function CentralGravitySolver(body, physicsBody, options) { - _classCallCheck(this, CentralGravitySolver); + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } - this.body = body; - this.physicsBody = physicsBody; - this.setOptions(options); - } + this._input = input; - _createClass(CentralGravitySolver, [{ - key: "setOptions", - value: function setOptions(options) { - this.options = options; - } - }, { - key: "solve", - value: function solve() { - var dx, dy, distance, node, i; - var nodes = this.body.nodes; - var nodeIndices = this.physicsBody.physicsNodeIndices; - var forces = this.physicsBody.forces; + // if tap count matches we have recognized it, + // else it has began recognizing... + var tapCount = this.count % options.taps; + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.interval, this); + return STATE_BEGAN; + } + } + } + return STATE_FAILED; + }, - var gravity = this.options.centralGravity; - var gravityForce = 0; + failTimeout: function() { + this._timer = setTimeoutContext(function() { + this.state = STATE_FAILED; + }, this.options.interval, this); + return STATE_FAILED; + }, - for (i = 0; i < nodeIndices.length; i++) { - var nodeId = nodeIndices[i]; - node = nodes[nodeId]; - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + reset: function() { + clearTimeout(this._timer); + }, - gravityForce = distance === 0 ? 0 : gravity / distance; - forces[nodeId].x = dx * gravityForce; - forces[nodeId].y = dy * gravityForce; - } + emit: function() { + if (this.state == STATE_RECOGNIZED ) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } } - }]); + }); - return CentralGravitySolver; - })(); + /** + * Simple way to create an manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + function Hammer(element, options) { + options = options || {}; + options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset); + return new Manager(element, options); + } - exports["default"] = CentralGravitySolver; - module.exports = exports["default"]; + /** + * @const {string} + */ + Hammer.VERSION = '2.0.4'; -/***/ }, -/* 79 */ -/***/ function(module, exports, __webpack_require__) { + /** + * default settings + * @namespace + */ + Hammer.defaults = { + /** + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, - 'use strict'; + /** + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, - Object.defineProperty(exports, '__esModule', { - value: true - }); + /** + * @type {Boolean} + * @default true + */ + enable: true, - var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, - property = _x2, - receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + /** + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + /** + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + /** + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * @type {Array} + */ + preset: [ + // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] + [RotateRecognizer, { enable: false }], + [PinchRecognizer, { enable: false }, ['rotate']], + [SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }], + [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], + [TapRecognizer], + [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], + [PressRecognizer] + ], - function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } + /** + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: 'none', - var _Node2 = __webpack_require__(71); + /** + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: 'none', - var _Node3 = _interopRequireDefault(_Node2); + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - /** - * - */ + /** + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - var Cluster = (function (_Node) { - function Cluster(options, body, imagelist, grouplist, globalOptions) { - _classCallCheck(this, Cluster); + /** + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: 'none', - _get(Object.getPrototypeOf(Cluster.prototype), 'constructor', this).call(this, options, body, imagelist, grouplist, globalOptions); + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; + + var STOP = 1; + var FORCED_STOP = 2; - this.isCluster = true; - this.containedNodes = {}; - this.containedEdges = {}; - } + /** + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + function Manager(element, options) { + options = options || {}; - _inherits(Cluster, _Node); + this.options = merge(options, Hammer.defaults); + this.options.inputTarget = this.options.inputTarget || element; - return Cluster; - })(_Node3['default']); + this.handlers = {}; + this.session = {}; + this.recognizers = []; - exports['default'] = Cluster; - module.exports = exports['default']; + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); -/***/ }, -/* 80 */ -/***/ function(module, exports, __webpack_require__) { + toggleCssProps(this, true); - 'use strict'; + each(options.recognizers, function(item) { + var recognizer = this.add(new (item[0])(item[1])); + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); + } - Object.defineProperty(exports, '__esModule', { - value: true - }); + Manager.prototype = { + /** + * set options + * @param {Object} options + * @returns {Manager} + */ + set: function(options) { + extend(this.options, options); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + // Options that need a little more setup + if (options.touchAction) { + this.touchAction.update(); + } + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + return this; + }, - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + /** + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + stop: function(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + }, - var util = __webpack_require__(1); - var Hammer = __webpack_require__(41); - var hammerUtil = __webpack_require__(44); - var keycharm = __webpack_require__(86); + /** + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + recognize: function(inputData) { + var session = this.session; + if (session.stopped) { + return; + } - var NavigationHandler = (function () { - function NavigationHandler(body, canvas) { - var _this = this; + // run the touch-action polyfill + this.touchAction.preventDefaults(inputData); - _classCallCheck(this, NavigationHandler); + var recognizer; + var recognizers = this.recognizers; - this.body = body; - this.canvas = canvas; + // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + var curRecognizer = session.curRecognizer; - this.iconsCreated = false; - this.navigationHammers = []; - this.boundFunctions = {}; - this.touchTime = 0; - this.activated = false; + // reset when the last recognizer is recognized + // or when we're in a new session + if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) { + curRecognizer = session.curRecognizer = null; + } - this.body.emitter.on('release', function () { - _this._stopMovement(); - }); - this.body.emitter.on('activate', function () { - _this.activated = true;_this.configureKeyboardBindings(); - }); - this.body.emitter.on('deactivate', function () { - _this.activated = false;_this.configureKeyboardBindings(); - }); - this.body.emitter.on('destroy', function () { - if (_this.keycharm !== undefined) { - _this.keycharm.destroy(); - } - }); + var i = 0; + while (i < recognizers.length) { + recognizer = recognizers[i]; - this.options = {}; - } + // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + if (session.stopped !== FORCED_STOP && ( // 1 + !curRecognizer || recognizer == curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } - _createClass(NavigationHandler, [{ - key: 'setOptions', - value: function setOptions(options) { - if (options !== undefined) { - this.options = options; - this.create(); - } - } - }, { - key: 'create', - value: function create() { - if (this.options.navigationButtons === true) { - if (this.iconsCreated === false) { - this.loadNavigationElements(); + // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + curRecognizer = session.curRecognizer = recognizer; + } + i++; } - } else if (this.iconsCreated === true) { - this.cleanNavigation(); - } + }, - this.configureKeyboardBindings(); - } - }, { - key: 'cleanNavigation', - value: function cleanNavigation() { - // clean hammer bindings - if (this.navigationHammers.length != 0) { - for (var i = 0; i < this.navigationHammers.length; i++) { - this.navigationHammers[i].destroy(); + /** + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + get: function(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; } - this.navigationHammers = []; - } - - this._navigationReleaseOverload = function () {}; - // clean up previous navigation items - if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { - this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); - } - - this.iconsCreated = false; - } - }, { - key: 'loadNavigationElements', + var recognizers = this.recognizers; + for (var i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event == recognizer) { + return recognizers[i]; + } + } + return null; + }, /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private + * add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} */ - value: function loadNavigationElements() { - this.cleanNavigation(); + add: function(recognizer) { + if (invokeArrayArg(recognizer, 'add', this)) { + return this; + } - this.navigationDOM = {}; - var navigationDivs = ['up', 'down', 'left', 'right', 'zoomIn', 'zoomOut', 'zoomExtends']; - var navigationDivActions = ['_moveUp', '_moveDown', '_moveLeft', '_moveRight', '_zoomIn', '_zoomOut', '_fit']; + // remove existing + var existing = this.get(recognizer.options.event); + if (existing) { + this.remove(existing); + } - this.navigationDOM['wrapper'] = document.createElement('div'); - this.navigationDOM['wrapper'].className = 'vis-navigation'; - this.canvas.frame.appendChild(this.navigationDOM['wrapper']); + this.recognizers.push(recognizer); + recognizer.manager = this; - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDOM[navigationDivs[i]] = document.createElement('div'); - this.navigationDOM[navigationDivs[i]].className = 'vis-button vis-' + navigationDivs[i]; - this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); + this.touchAction.update(); + return recognizer; + }, - var hammer = new Hammer(this.navigationDOM[navigationDivs[i]]); - if (navigationDivActions[i] === '_fit') { - hammerUtil.onTouch(hammer, this._fit.bind(this)); - } else { - hammerUtil.onTouch(hammer, this.bindToRedraw.bind(this, navigationDivActions[i])); + /** + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + remove: function(recognizer) { + if (invokeArrayArg(recognizer, 'remove', this)) { + return this; } - this.navigationHammers.push(hammer); - } + var recognizers = this.recognizers; + recognizer = this.get(recognizer); + recognizers.splice(inArray(recognizers, recognizer), 1); - this.iconsCreated = true; - } - }, { - key: 'bindToRedraw', - value: function bindToRedraw(action) { - if (this.boundFunctions[action] === undefined) { - this.boundFunctions[action] = this[action].bind(this); - this.body.emitter.on('initRedraw', this.boundFunctions[action]); - this.body.emitter.emit('_startRendering'); - } - } - }, { - key: 'unbindFromRedraw', - value: function unbindFromRedraw(action) { - if (this.boundFunctions[action] !== undefined) { - this.body.emitter.off('initRedraw', this.boundFunctions[action]); - this.body.emitter.emit('_stopRendering'); - delete this.boundFunctions[action]; - } - } - }, { - key: '_fit', + this.touchAction.update(); + return this; + }, /** - * this stops all movement induced by the navigation buttons - * - * @private + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this */ - value: function _fit() { - if (new Date().valueOf() - this.touchTime > 700) { - // TODO: fix ugly hack to avoid hammer's double fireing of event (because we use release?) - this.body.emitter.emit('fit', { duration: 700 }); - this.touchTime = new Date().valueOf(); - } - } - }, { - key: '_stopMovement', + on: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + }, /** - * this stops all movement induced by the navigation buttons - * - * @private + * unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this */ - value: function _stopMovement() { - for (var boundAction in this.boundFunctions) { - if (this.boundFunctions.hasOwnProperty(boundAction)) { - this.body.emitter.off('initRedraw', this.boundFunctions[boundAction]); - this.body.emitter.emit('_stopRendering'); - } - } - this.boundFunctions = {}; - } - }, { - key: '_moveUp', - value: function _moveUp() { - this.body.view.translation.y += this.options.keyboard.speed.y; - } - }, { - key: '_moveDown', - value: function _moveDown() { - this.body.view.translation.y -= this.options.keyboard.speed.y; - } - }, { - key: '_moveLeft', - value: function _moveLeft() { - this.body.view.translation.x += this.options.keyboard.speed.x; - } - }, { - key: '_moveRight', - value: function _moveRight() { - this.body.view.translation.x -= this.options.keyboard.speed.x; - } - }, { - key: '_zoomIn', - value: function _zoomIn() { - this.body.view.scale *= 1 + this.options.keyboard.speed.zoom; - } - }, { - key: '_zoomOut', - value: function _zoomOut() { - this.body.view.scale /= 1 + this.options.keyboard.speed.zoom; - } - }, { - key: 'configureKeyboardBindings', + off: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + if (!handler) { + delete handlers[event]; + } else { + handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + }, /** - * bind all keys using keycharm. + * emit event to the listeners + * @param {String} event + * @param {Object} data */ - value: function configureKeyboardBindings() { - if (this.keycharm !== undefined) { - this.keycharm.destroy(); - } - - if (this.options.keyboard.enabled === true) { - - if (this.options.keyboard.bindToWindow === true) { - this.keycharm = keycharm({ container: window, preventDefault: true }); - } else { - this.keycharm = keycharm({ container: this.canvas.frame, preventDefault: true }); + emit: function(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); } - this.keycharm.reset(); + // no handlers, so skip it all + var handlers = this.handlers[event] && this.handlers[event].slice(); + if (!handlers || !handlers.length) { + return; + } - if (this.activated === true) { - this.keycharm.bind('up', this.bindToRedraw.bind(this, '_moveUp'), 'keydown'); - this.keycharm.bind('down', this.bindToRedraw.bind(this, '_moveDown'), 'keydown'); - this.keycharm.bind('left', this.bindToRedraw.bind(this, '_moveLeft'), 'keydown'); - this.keycharm.bind('right', this.bindToRedraw.bind(this, '_moveRight'), 'keydown'); - this.keycharm.bind('=', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); - this.keycharm.bind('num+', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); - this.keycharm.bind('num-', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); - this.keycharm.bind('-', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); - this.keycharm.bind('[', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); - this.keycharm.bind(']', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); - this.keycharm.bind('pageup', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); - this.keycharm.bind('pagedown', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); + data.type = event; + data.preventDefault = function() { + data.srcEvent.preventDefault(); + }; - this.keycharm.bind('up', this.unbindFromRedraw.bind(this, '_moveUp'), 'keyup'); - this.keycharm.bind('down', this.unbindFromRedraw.bind(this, '_moveDown'), 'keyup'); - this.keycharm.bind('left', this.unbindFromRedraw.bind(this, '_moveLeft'), 'keyup'); - this.keycharm.bind('right', this.unbindFromRedraw.bind(this, '_moveRight'), 'keyup'); - this.keycharm.bind('=', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); - this.keycharm.bind('num+', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); - this.keycharm.bind('num-', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); - this.keycharm.bind('-', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); - this.keycharm.bind('[', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); - this.keycharm.bind(']', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); - this.keycharm.bind('pageup', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); - this.keycharm.bind('pagedown', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); + var i = 0; + while (i < handlers.length) { + handlers[i](data); + i++; } - } + }, + + /** + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + destroy: function() { + this.element && toggleCssProps(this, false); + + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; } - }]); + }; + + /** + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ + function toggleCssProps(manager, add) { + var element = manager.element; + each(manager.options.cssProps, function(value, name) { + element.style[prefixed(element.style, name)] = add ? value : ''; + }); + } + + /** + * trigger dom event + * @param {String} event + * @param {Object} data + */ + function triggerDomEvent(event, data) { + var gestureEvent = document.createEvent('Event'); + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); + } + + extend(Hammer, { + INPUT_START: INPUT_START, + INPUT_MOVE: INPUT_MOVE, + INPUT_END: INPUT_END, + INPUT_CANCEL: INPUT_CANCEL, + + STATE_POSSIBLE: STATE_POSSIBLE, + STATE_BEGAN: STATE_BEGAN, + STATE_CHANGED: STATE_CHANGED, + STATE_ENDED: STATE_ENDED, + STATE_RECOGNIZED: STATE_RECOGNIZED, + STATE_CANCELLED: STATE_CANCELLED, + STATE_FAILED: STATE_FAILED, + + DIRECTION_NONE: DIRECTION_NONE, + DIRECTION_LEFT: DIRECTION_LEFT, + DIRECTION_RIGHT: DIRECTION_RIGHT, + DIRECTION_UP: DIRECTION_UP, + DIRECTION_DOWN: DIRECTION_DOWN, + DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL: DIRECTION_VERTICAL, + DIRECTION_ALL: DIRECTION_ALL, + + Manager: Manager, + Input: Input, + TouchAction: TouchAction, + + TouchInput: TouchInput, + MouseInput: MouseInput, + PointerEventInput: PointerEventInput, + TouchMouseInput: TouchMouseInput, + SingleTouchInput: SingleTouchInput, + + Recognizer: Recognizer, + AttrRecognizer: AttrRecognizer, + Tap: TapRecognizer, + Pan: PanRecognizer, + Swipe: SwipeRecognizer, + Pinch: PinchRecognizer, + Rotate: RotateRecognizer, + Press: PressRecognizer, + + on: addEventListeners, + off: removeEventListeners, + each: each, + merge: merge, + extend: extend, + inherit: inherit, + bindFn: bindFn, + prefixed: prefixed + }); - return NavigationHandler; - })(); + if ("function" == TYPE_FUNCTION && __webpack_require__(88)) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof module != 'undefined' && module.exports) { + module.exports = Hammer; + } else { + window[exportName] = Hammer; + } + + })(window, document, 'Hammer'); - exports['default'] = NavigationHandler; - module.exports = exports['default']; /***/ }, -/* 81 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -33515,3381 +33550,3333 @@ return /******/ (function(modules) { // webpackBootstrap function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - /** - * Popup is a class to create a popup window with some text - * @param {Element} container The container object. - * @param {Number} [x] - * @param {Number} [y] - * @param {String} [text] - * @param {Object} [style] An object containing borderColor, - * backgroundColor, etc. - */ + var Hammer = __webpack_require__(41); + var hammerUtil = __webpack_require__(48); + var util = __webpack_require__(1); - var Popup = (function () { - function Popup(container) { - _classCallCheck(this, Popup); + var ColorPicker = (function () { + function ColorPicker() { + var pixelRatio = arguments[0] === undefined ? 1 : arguments[0]; - this.container = container; + _classCallCheck(this, ColorPicker); - this.x = 0; - this.y = 0; - this.padding = 5; - this.hidden = false; + this.pixelRatio = pixelRatio; + this.generated = false; + this.centerCoordinates = { x: 289 / 2, y: 289 / 2 }; + this.r = 289 * 0.49; + this.color = { r: 255, g: 255, b: 255, a: 1 }; + this.hueCircle = undefined; + this.initialColor = { r: 255, g: 255, b: 255, a: 1 }; + this.previousColor = undefined; + this.applied = false; - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'vis-network-tooltip'; - this.container.appendChild(this.frame); + // bound by + this.updateCallback = function () {}; + + // create all DOM elements + this._create(); } - _createClass(Popup, [{ - key: 'setPosition', + _createClass(ColorPicker, [{ + key: 'insertTo', /** - * @param {number} x Horizontal position of the popup window - * @param {number} y Vertical position of the popup window + * this inserts the colorPicker into a div from the DOM + * @param container */ - value: function setPosition(x, y) { - this.x = parseInt(x); - this.y = parseInt(y); + value: function insertTo(container) { + if (this.hammer !== undefined) { + this.hammer.destroy(); + this.hammer = undefined; + } + this.container = container; + this.container.appendChild(this.frame); + this._bindHammer(); + + this._setSize(); } }, { - key: 'setText', + key: 'setCallback', /** - * Set the content for the popup window. This can be HTML code or text. - * @param {string | Element} content + * the callback is executed on apply and save. Bind it to the application + * @param callback */ - value: function setText(content) { - if (content instanceof Element) { - this.frame.innerHTML = ''; - this.frame.appendChild(content); + value: function setCallback(callback) { + if (typeof callback === 'function') { + this.updateCallback = callback; } else { - this.frame.innerHTML = content; // string containing text or HTML + throw new Error('Function attempted to set as colorPicker callback is not a function.'); } } }, { - key: 'show', + key: '_isColorString', + value: function _isColorString(color) { + var htmlColors = { black: '#000000', navy: '#000080', darkblue: '#00008B', mediumblue: '#0000CD', blue: '#0000FF', darkgreen: '#006400', green: '#008000', teal: '#008080', darkcyan: '#008B8B', deepskyblue: '#00BFFF', darkturquoise: '#00CED1', mediumspringgreen: '#00FA9A', lime: '#00FF00', springgreen: '#00FF7F', aqua: '#00FFFF', cyan: '#00FFFF', midnightblue: '#191970', dodgerblue: '#1E90FF', lightseagreen: '#20B2AA', forestgreen: '#228B22', seagreen: '#2E8B57', darkslategray: '#2F4F4F', limegreen: '#32CD32', mediumseagreen: '#3CB371', turquoise: '#40E0D0', royalblue: '#4169E1', steelblue: '#4682B4', darkslateblue: '#483D8B', mediumturquoise: '#48D1CC', indigo: '#4B0082', darkolivegreen: '#556B2F', cadetblue: '#5F9EA0', cornflowerblue: '#6495ED', mediumaquamarine: '#66CDAA', dimgray: '#696969', slateblue: '#6A5ACD', olivedrab: '#6B8E23', slategray: '#708090', lightslategray: '#778899', mediumslateblue: '#7B68EE', lawngreen: '#7CFC00', chartreuse: '#7FFF00', aquamarine: '#7FFFD4', maroon: '#800000', purple: '#800080', olive: '#808000', gray: '#808080', skyblue: '#87CEEB', lightskyblue: '#87CEFA', blueviolet: '#8A2BE2', darkred: '#8B0000', darkmagenta: '#8B008B', saddlebrown: '#8B4513', darkseagreen: '#8FBC8F', lightgreen: '#90EE90', mediumpurple: '#9370D8', darkviolet: '#9400D3', palegreen: '#98FB98', darkorchid: '#9932CC', yellowgreen: '#9ACD32', sienna: '#A0522D', brown: '#A52A2A', darkgray: '#A9A9A9', lightblue: '#ADD8E6', greenyellow: '#ADFF2F', paleturquoise: '#AFEEEE', lightsteelblue: '#B0C4DE', powderblue: '#B0E0E6', firebrick: '#B22222', darkgoldenrod: '#B8860B', mediumorchid: '#BA55D3', rosybrown: '#BC8F8F', darkkhaki: '#BDB76B', silver: '#C0C0C0', mediumvioletred: '#C71585', indianred: '#CD5C5C', peru: '#CD853F', chocolate: '#D2691E', tan: '#D2B48C', lightgrey: '#D3D3D3', palevioletred: '#D87093', thistle: '#D8BFD8', orchid: '#DA70D6', goldenrod: '#DAA520', crimson: '#DC143C', gainsboro: '#DCDCDC', plum: '#DDA0DD', burlywood: '#DEB887', lightcyan: '#E0FFFF', lavender: '#E6E6FA', darksalmon: '#E9967A', violet: '#EE82EE', palegoldenrod: '#EEE8AA', lightcoral: '#F08080', khaki: '#F0E68C', aliceblue: '#F0F8FF', honeydew: '#F0FFF0', azure: '#F0FFFF', sandybrown: '#F4A460', wheat: '#F5DEB3', beige: '#F5F5DC', whitesmoke: '#F5F5F5', mintcream: '#F5FFFA', ghostwhite: '#F8F8FF', salmon: '#FA8072', antiquewhite: '#FAEBD7', linen: '#FAF0E6', lightgoldenrodyellow: '#FAFAD2', oldlace: '#FDF5E6', red: '#FF0000', fuchsia: '#FF00FF', magenta: '#FF00FF', deeppink: '#FF1493', orangered: '#FF4500', tomato: '#FF6347', hotpink: '#FF69B4', coral: '#FF7F50', darkorange: '#FF8C00', lightsalmon: '#FFA07A', orange: '#FFA500', lightpink: '#FFB6C1', pink: '#FFC0CB', gold: '#FFD700', peachpuff: '#FFDAB9', navajowhite: '#FFDEAD', moccasin: '#FFE4B5', bisque: '#FFE4C4', mistyrose: '#FFE4E1', blanchedalmond: '#FFEBCD', papayawhip: '#FFEFD5', lavenderblush: '#FFF0F5', seashell: '#FFF5EE', cornsilk: '#FFF8DC', lemonchiffon: '#FFFACD', floralwhite: '#FFFAF0', snow: '#FFFAFA', yellow: '#FFFF00', lightyellow: '#FFFFE0', ivory: '#FFFFF0', white: '#FFFFFF' }; + if (typeof color === 'string') { + return htmlColors[color]; + } + } + }, { + key: 'setColor', /** - * Show the popup window - * @param {boolean} [doShow] Show or hide the window + * Set the color of the colorPicker + * Supported formats: + * 'red' --> HTML color string + * '#ffffff' --> hex string + * 'rbg(255,255,255)' --> rgb string + * 'rgba(255,255,255,1.0)' --> rgba string + * {r:255,g:255,b:255} --> rgb object + * {r:255,g:255,b:255,a:1.0} --> rgba object + * @param color + * @param setInitial */ - value: function show(doShow) { - if (doShow === undefined) { - doShow = true; + value: function setColor(color) { + var setInitial = arguments[1] === undefined ? true : arguments[1]; + + if (color === 'none') { + return; } - if (doShow === true) { - var height = this.frame.clientHeight; - var width = this.frame.clientWidth; - var maxHeight = this.frame.parentNode.clientHeight; - var maxWidth = this.frame.parentNode.clientWidth; + var rgba = undefined; - var top = this.y - height; - if (top + height + this.padding > maxHeight) { - top = maxHeight - height - this.padding; - } - if (top < this.padding) { - top = this.padding; - } + // if a html color shorthand is used, convert to hex + var htmlColor = this._isColorString(color); + if (htmlColor !== undefined) { + color = htmlColor; + } - var left = this.x; - if (left + width + this.padding > maxWidth) { - left = maxWidth - width - this.padding; + // check format + if (util.isString(color) === true) { + if (util.isValidRGB(color) === true) { + var rgbaArray = color.substr(4).substr(0, color.length - 5).split(','); + rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: 1 }; + } else if (util.isValidRGBA(color) === true) { + var rgbaArray = color.substr(5).substr(0, color.length - 6).split(','); + rgba = { r: rgbaArray[0], g: rgbaArray[1], b: rgbaArray[2], a: rgbaArray[3] }; + } else if (util.isValidHex(color) === true) { + var rgbObj = util.hexToRGB(color); + rgba = { r: rgbObj.r, g: rgbObj.g, b: rgbObj.b, a: 1 }; } - if (left < this.padding) { - left = this.padding; + } else { + if (color instanceof Object) { + if (color.r !== undefined && color.g !== undefined && color.b !== undefined) { + var alpha = color.a !== undefined ? color.a : '1.0'; + rgba = { r: color.r, g: color.g, b: color.b, a: alpha }; + } } + } - this.frame.style.left = left + 'px'; - this.frame.style.top = top + 'px'; - this.frame.style.visibility = 'visible'; - this.hidden = false; + // set color + if (rgba === undefined) { + throw new Error('Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: ' + JSON.stringify(color)); } else { - this.hide(); + this._setColor(rgba, setInitial); } } }, { - key: 'hide', + key: 'show', /** - * Hide the popup window + * this shows the color picker at a location. The hue circle is constructed once and stored. + * @param x + * @param y */ - value: function hide() { - this.hidden = true; - this.frame.style.visibility = 'hidden'; + value: function show(x, y) { + this.applied = false; + this.frame.style.display = 'block'; + this.frame.style.top = y + 'px'; + this.frame.style.left = x + 'px'; + this._generateHueCircle(); } - }]); - - return Popup; - })(); - - exports['default'] = Popup; - module.exports = exports['default']; - -/***/ }, -/* 82 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.4 - 2014-09-28 - * http://hammerjs.github.io/ - * - * Copyright (c) 2014 Jorik Tangelder; - * Licensed under the MIT license */ - (function(window, document, exportName, undefined) { - 'use strict'; + }, { + key: '_hide', - var VENDOR_PREFIXES = ['', 'webkit', 'moz', 'MS', 'ms', 'o']; - var TEST_ELEMENT = document.createElement('div'); + // ------------------------------------------ PRIVATE ----------------------------- // - var TYPE_FUNCTION = 'function'; + /** + * Hide the picker. Is called by the cancel button. + * Optional boolean to store the previous color for easy access later on. + * @param storePrevious + * @private + */ + value: function _hide() { + var storePrevious = arguments[0] === undefined ? true : arguments[0]; - var round = Math.round; - var abs = Math.abs; - var now = Date.now; + // store the previous color for next time; + if (storePrevious === true) { + this.previousColor = util.extend({}, this.color); + } - /** - * set a timeout with a given scope - * @param {Function} fn - * @param {Number} timeout - * @param {Object} context - * @returns {number} - */ - function setTimeoutContext(fn, timeout, context) { - return setTimeout(bindFn(fn, context), timeout); - } + if (this.applied === true) { + this.updateCallback(this.initialColor); + } - /** - * if the argument is an array, we want to execute the fn on each entry - * if it aint an array we don't want to do a thing. - * this is used by all the methods that accept a single and array argument. - * @param {*|Array} arg - * @param {String} fn - * @param {Object} [context] - * @returns {Boolean} - */ - function invokeArrayArg(arg, fn, context) { - if (Array.isArray(arg)) { - each(arg, context[fn], context); - return true; + this.frame.style.display = 'none'; } - return false; - } - - /** - * walk objects and arrays - * @param {Object} obj - * @param {Function} iterator - * @param {Object} context - */ - function each(obj, iterator, context) { - var i; + }, { + key: '_save', - if (!obj) { - return; + /** + * bound to the save button. Saves and hides. + * @private + */ + value: function _save() { + this.updateCallback(this.color); + this.applied = false; + this._hide(); } + }, { + key: '_apply', - if (obj.forEach) { - obj.forEach(iterator, context); - } else if (obj.length !== undefined) { - i = 0; - while (i < obj.length) { - iterator.call(context, obj[i], i, obj); - i++; - } - } else { - for (i in obj) { - obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); - } + /** + * Bound to apply button. Saves but does not close. Is undone by the cancel button. + * @private + */ + value: function _apply() { + this.applied = true; + this.updateCallback(this.color); + this._updatePicker(this.color); } - } + }, { + key: '_loadLast', - /** - * extend object. - * means that properties in dest will be overwritten by the ones in src. - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge] - * @returns {Object} dest - */ - function extend(dest, src, merge) { - var keys = Object.keys(src); - var i = 0; - while (i < keys.length) { - if (!merge || (merge && dest[keys[i]] === undefined)) { - dest[keys[i]] = src[keys[i]]; - } - i++; + /** + * load the color from the previous session. + * @private + */ + value: function _loadLast() { + if (this.previousColor !== undefined) { + this.setColor(this.previousColor, false); + } else { + alert('There is no last color to load...'); + } } - return dest; - } + }, { + key: '_setColor', - /** - * merge the values from src in the dest. - * means that properties that exist in dest will not be overwritten by src - * @param {Object} dest - * @param {Object} src - * @returns {Object} dest - */ - function merge(dest, src) { - return extend(dest, src, true); - } + /** + * set the color, place the picker + * @param rgba + * @param setInitial + * @private + */ + value: function _setColor(rgba) { + var setInitial = arguments[1] === undefined ? true : arguments[1]; - /** - * simple class inheritance - * @param {Function} child - * @param {Function} base - * @param {Object} [properties] - */ - function inherit(child, base, properties) { - var baseP = base.prototype, - childP; + // store the initial color + if (setInitial === true) { + this.initialColor = util.extend({}, rgba); + } - childP = child.prototype = Object.create(baseP); - childP.constructor = child; - childP._super = baseP; + this.color = rgba; + var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); - if (properties) { - extend(childP, properties); - } - } + var angleConvert = 2 * Math.PI; + var radius = this.r * hsv.s; + var x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h); + var y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h); - /** - * simple function bind - * @param {Function} fn - * @param {Object} context - * @returns {Function} - */ - function bindFn(fn, context) { - return function boundFn() { - return fn.apply(context, arguments); - }; - } + this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px'; + this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px'; - /** - * let a boolean value also be a function that must return a boolean - * this first item in args will be used as the context - * @param {Boolean|Function} val - * @param {Array} [args] - * @returns {Boolean} - */ - function boolOrFn(val, args) { - if (typeof val == TYPE_FUNCTION) { - return val.apply(args ? args[0] || undefined : undefined, args); + this._updatePicker(rgba); } - return val; - } - - /** - * use the val2 when val1 is undefined - * @param {*} val1 - * @param {*} val2 - * @returns {*} - */ - function ifUndefined(val1, val2) { - return (val1 === undefined) ? val2 : val1; - } - - /** - * addEventListener with multiple events at once - * @param {EventTarget} target - * @param {String} types - * @param {Function} handler - */ - function addEventListeners(target, types, handler) { - each(splitStr(types), function(type) { - target.addEventListener(type, handler, false); - }); - } - - /** - * removeEventListener with multiple events at once - * @param {EventTarget} target - * @param {String} types - * @param {Function} handler - */ - function removeEventListeners(target, types, handler) { - each(splitStr(types), function(type) { - target.removeEventListener(type, handler, false); - }); - } + }, { + key: '_setOpacity', - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - function hasParent(node, parent) { - while (node) { - if (node == parent) { - return true; - } - node = node.parentNode; + /** + * bound to opacity control + * @param value + * @private + */ + value: function _setOpacity(value) { + this.color.a = value / 100; + this._updatePicker(this.color); } - return false; - } - - /** - * small indexOf wrapper - * @param {String} str - * @param {String} find - * @returns {Boolean} found - */ - function inStr(str, find) { - return str.indexOf(find) > -1; - } - - /** - * split string on whitespace - * @param {String} str - * @returns {Array} words - */ - function splitStr(str) { - return str.trim().split(/\s+/g); - } + }, { + key: '_setBrightness', - /** - * find if a array contains the object using indexOf or a simple polyFill - * @param {Array} src - * @param {String} find - * @param {String} [findByKey] - * @return {Boolean|Number} false when not found, or the index - */ - function inArray(src, find, findByKey) { - if (src.indexOf && !findByKey) { - return src.indexOf(find); - } else { - var i = 0; - while (i < src.length) { - if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) { - return i; - } - i++; - } - return -1; + /** + * bound to brightness control + * @param value + * @private + */ + value: function _setBrightness(value) { + var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); + hsv.v = value / 100; + var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); + rgba['a'] = this.color.a; + this.color = rgba; + this._updatePicker(); } - } + }, { + key: '_updatePicker', - /** - * convert array-like objects to real arrays - * @param {Object} obj - * @returns {Array} - */ - function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - } + /** + * update the colorpicker. A black circle overlays the hue circle to mimic the brightness decreasing. + * @param rgba + * @private + */ + value: function _updatePicker() { + var rgba = arguments[0] === undefined ? this.color : arguments[0]; - /** - * unique array with objects based on a key (like 'id') or just by the array's value - * @param {Array} src [{id:1},{id:2},{id:1}] - * @param {String} [key] - * @param {Boolean} [sort=False] - * @returns {Array} [{id:1},{id:2}] - */ - function uniqueArray(src, key, sort) { - var results = []; - var values = []; - var i = 0; + var hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b); + var ctx = this.colorPickerCanvas.getContext('2d'); + if (this.pixelRation === undefined) { + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + } + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - while (i < src.length) { - var val = key ? src[i][key] : src[i]; - if (inArray(values, val) < 0) { - results.push(src[i]); - } - values[i] = val; - i++; + // clear the canvas + var w = this.colorPickerCanvas.clientWidth; + var h = this.colorPickerCanvas.clientHeight; + ctx.clearRect(0, 0, w, h); + + ctx.putImageData(this.hueCircle, 0, 0); + ctx.fillStyle = 'rgba(0,0,0,' + (1 - hsv.v) + ')'; + ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); + ctx.fill(); + + this.brightnessRange.value = 100 * hsv.v; + this.opacityRange.value = 100 * rgba.a; + + this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; + this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; } + }, { + key: '_setSize', - if (sort) { - if (!key) { - results = results.sort(); - } else { - results = results.sort(function sortUniqueArray(a, b) { - return a[key] > b[key]; - }); - } + /** + * used by create to set the size of the canvas. + * @private + */ + value: function _setSize() { + this.colorPickerCanvas.style.width = '100%'; + this.colorPickerCanvas.style.height = '100%'; + + this.colorPickerCanvas.width = 289 * this.pixelRatio; + this.colorPickerCanvas.height = 289 * this.pixelRatio; } + }, { + key: '_create', - return results; - } + /** + * create all dom elements + * TODO: cleanup, lots of similar dom elements + * @private + */ + value: function _create() { + this.frame = document.createElement('div'); + this.frame.className = 'vis-color-picker'; - /** - * get the prefixed property - * @param {Object} obj - * @param {String} property - * @returns {String|Undefined} prefixed - */ - function prefixed(obj, property) { - var prefix, prop; - var camelProp = property[0].toUpperCase() + property.slice(1); + this.colorPickerDiv = document.createElement('div'); + this.colorPickerSelector = document.createElement('div'); + this.colorPickerSelector.className = 'vis-selector'; + this.colorPickerDiv.appendChild(this.colorPickerSelector); - var i = 0; - while (i < VENDOR_PREFIXES.length) { - prefix = VENDOR_PREFIXES[i]; - prop = (prefix) ? prefix + camelProp : property; + this.colorPickerCanvas = document.createElement('canvas'); + this.colorPickerDiv.appendChild(this.colorPickerCanvas); - if (prop in obj) { - return prop; - } - i++; - } - return undefined; - } + if (!this.colorPickerCanvas.getContext) { + var noCanvas = document.createElement('DIV'); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold'; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.colorPickerCanvas.appendChild(noCanvas); + } else { + var ctx = this.colorPickerCanvas.getContext('2d'); + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); - /** - * get a unique id - * @returns {number} uniqueId - */ - var _uniqueId = 1; - function uniqueId() { - return _uniqueId++; - } + this.colorPickerCanvas.getContext('2d').setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + } - /** - * get the window object of an element - * @param {HTMLElement} element - * @returns {DocumentView|Window} - */ - function getWindowForElement(element) { - var doc = element.ownerDocument; - return (doc.defaultView || doc.parentWindow); - } + this.colorPickerDiv.className = 'vis-color'; - var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; + this.opacityDiv = document.createElement('div'); + this.opacityDiv.className = 'vis-opacity'; - var SUPPORT_TOUCH = ('ontouchstart' in window); - var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined; - var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); + this.brightnessDiv = document.createElement('div'); + this.brightnessDiv.className = 'vis-brightness'; - var INPUT_TYPE_TOUCH = 'touch'; - var INPUT_TYPE_PEN = 'pen'; - var INPUT_TYPE_MOUSE = 'mouse'; - var INPUT_TYPE_KINECT = 'kinect'; + this.arrowDiv = document.createElement('div'); + this.arrowDiv.className = 'vis-arrow'; - var COMPUTE_INTERVAL = 25; + this.opacityRange = document.createElement('input'); + this.opacityRange.type = 'range'; + this.opacityRange.min = '0'; + this.opacityRange.max = '100'; + this.opacityRange.value = '100'; + this.opacityRange.className = 'vis-range'; - var INPUT_START = 1; - var INPUT_MOVE = 2; - var INPUT_END = 4; - var INPUT_CANCEL = 8; + this.brightnessRange = document.createElement('input'); + this.brightnessRange.type = 'range'; + this.brightnessRange.min = '0'; + this.brightnessRange.max = '100'; + this.brightnessRange.value = '100'; + this.brightnessRange.className = 'vis-range'; - var DIRECTION_NONE = 1; - var DIRECTION_LEFT = 2; - var DIRECTION_RIGHT = 4; - var DIRECTION_UP = 8; - var DIRECTION_DOWN = 16; + this.opacityDiv.appendChild(this.opacityRange); + this.brightnessDiv.appendChild(this.brightnessRange); - var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; - var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; - var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; + var me = this; + this.opacityRange.onchange = function () { + me._setOpacity(this.value); + }; + this.opacityRange.oninput = function () { + me._setOpacity(this.value); + }; + this.brightnessRange.onchange = function () { + me._setBrightness(this.value); + }; + this.brightnessRange.oninput = function () { + me._setBrightness(this.value); + }; - var PROPS_XY = ['x', 'y']; - var PROPS_CLIENT_XY = ['clientX', 'clientY']; + this.brightnessLabel = document.createElement('div'); + this.brightnessLabel.className = 'vis-label vis-brightness'; + this.brightnessLabel.innerHTML = 'brightness:'; - /** - * create new input type manager - * @param {Manager} manager - * @param {Function} callback - * @returns {Input} - * @constructor - */ - function Input(manager, callback) { - var self = this; - this.manager = manager; - this.callback = callback; - this.element = manager.element; - this.target = manager.options.inputTarget; + this.opacityLabel = document.createElement('div'); + this.opacityLabel.className = 'vis-label vis-opacity'; + this.opacityLabel.innerHTML = 'opacity:'; - // smaller wrapper around the handler, for the scope and the enabled state of the manager, - // so when disabled the input events are completely bypassed. - this.domHandler = function(ev) { - if (boolOrFn(manager.options.enable, [manager])) { - self.handler(ev); - } - }; + this.newColorDiv = document.createElement('div'); + this.newColorDiv.className = 'vis-new-color'; + this.newColorDiv.innerHTML = 'new'; - this.init(); + this.initialColorDiv = document.createElement('div'); + this.initialColorDiv.className = 'vis-initial-color'; + this.initialColorDiv.innerHTML = 'initial'; - } + this.cancelButton = document.createElement('div'); + this.cancelButton.className = 'vis-button vis-cancel'; + this.cancelButton.innerHTML = 'cancel'; + this.cancelButton.onclick = this._hide.bind(this, false); + + this.applyButton = document.createElement('div'); + this.applyButton.className = 'vis-button vis-apply'; + this.applyButton.innerHTML = 'apply'; + this.applyButton.onclick = this._apply.bind(this); + + this.saveButton = document.createElement('div'); + this.saveButton.className = 'vis-button vis-save'; + this.saveButton.innerHTML = 'save'; + this.saveButton.onclick = this._save.bind(this); + + this.loadButton = document.createElement('div'); + this.loadButton.className = 'vis-button vis-load'; + this.loadButton.innerHTML = 'load last'; + this.loadButton.onclick = this._loadLast.bind(this); + + this.frame.appendChild(this.colorPickerDiv); + this.frame.appendChild(this.arrowDiv); + this.frame.appendChild(this.brightnessLabel); + this.frame.appendChild(this.brightnessDiv); + this.frame.appendChild(this.opacityLabel); + this.frame.appendChild(this.opacityDiv); + this.frame.appendChild(this.newColorDiv); + this.frame.appendChild(this.initialColorDiv); + + this.frame.appendChild(this.cancelButton); + this.frame.appendChild(this.applyButton); + this.frame.appendChild(this.saveButton); + this.frame.appendChild(this.loadButton); + } + }, { + key: '_bindHammer', - Input.prototype = { /** - * should handle the inputEvent data and trigger the callback - * @virtual + * bind hammer to the color picker + * @private */ - handler: function() { }, + value: function _bindHammer() { + var _this = this; + + this.drag = {}; + this.pinch = {}; + this.hammer = new Hammer(this.colorPickerCanvas); + this.hammer.get('pinch').set({ enable: true }); + + hammerUtil.onTouch(this.hammer, function (event) { + _this._moveSelector(event); + }); + this.hammer.on('tap', function (event) { + _this._moveSelector(event); + }); + this.hammer.on('panstart', function (event) { + _this._moveSelector(event); + }); + this.hammer.on('panmove', function (event) { + _this._moveSelector(event); + }); + this.hammer.on('panend', function (event) { + _this._moveSelector(event); + }); + } + }, { + key: '_generateHueCircle', /** - * bind the events + * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown. + * @private */ - init: function() { - this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); - this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); - this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); - }, + value: function _generateHueCircle() { + if (this.generated === false) { + var ctx = this.colorPickerCanvas.getContext('2d'); + if (this.pixelRation === undefined) { + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1); + } + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + + // clear the canvas + var w = this.colorPickerCanvas.clientWidth; + var h = this.colorPickerCanvas.clientHeight; + ctx.clearRect(0, 0, w, h); + + // draw hue circle + var x = undefined, + y = undefined, + hue = undefined, + sat = undefined; + this.centerCoordinates = { x: w * 0.5, y: h * 0.5 }; + this.r = 0.49 * w; + var angleConvert = 2 * Math.PI / 360; + var hfac = 1 / 360; + var sfac = 1 / this.r; + var rgb = undefined; + for (hue = 0; hue < 360; hue++) { + for (sat = 0; sat < this.r; sat++) { + x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue); + y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue); + rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1); + ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')'; + ctx.fillRect(x - 0.5, y - 0.5, 2, 2); + } + } + ctx.strokeStyle = 'rgba(0,0,0,1)'; + ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r); + ctx.stroke(); + + this.hueCircle = ctx.getImageData(0, 0, w, h); + } + this.generated = true; + } + }, { + key: '_moveSelector', /** - * unbind the events + * move the selector. This is called by hammer functions. + * + * @param event + * @private */ - destroy: function() { - this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); - this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); - this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); - } - }; + value: function _moveSelector(event) { + var rect = this.colorPickerDiv.getBoundingClientRect(); + var left = event.center.x - rect.left; + var top = event.center.y - rect.top; - /** - * create new input type manager - * called by the Manager constructor - * @param {Hammer} manager - * @returns {Input} - */ - function createInputInstance(manager) { - var Type; - var inputClass = manager.options.inputClass; + var centerY = 0.5 * this.colorPickerDiv.clientHeight; + var centerX = 0.5 * this.colorPickerDiv.clientWidth; - if (inputClass) { - Type = inputClass; - } else if (SUPPORT_POINTER_EVENTS) { - Type = PointerEventInput; - } else if (SUPPORT_ONLY_TOUCH) { - Type = TouchInput; - } else if (!SUPPORT_TOUCH) { - Type = MouseInput; - } else { - Type = TouchMouseInput; - } - return new (Type)(manager, inputHandler); - } + var x = left - centerX; + var y = top - centerY; - /** - * handle input events - * @param {Manager} manager - * @param {String} eventType - * @param {Object} input - */ - function inputHandler(manager, eventType, input) { - var pointersLen = input.pointers.length; - var changedPointersLen = input.changedPointers.length; - var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0)); - var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0)); + var angle = Math.atan2(x, y); + var radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX); - input.isFirst = !!isFirst; - input.isFinal = !!isFinal; + var newTop = Math.cos(angle) * radius + centerY; + var newLeft = Math.sin(angle) * radius + centerX; - if (isFirst) { - manager.session = {}; + this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px'; + this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px'; + + // set color + var h = angle / (2 * Math.PI); + h = h < 0 ? h + 1 : h; + var s = radius / this.r; + var hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b); + hsv.h = h; + hsv.s = s; + var rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v); + rgba['a'] = this.color.a; + this.color = rgba; + + // update previews + this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')'; + this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')'; } + }]); - // source event is the normalized value of the domEvents - // like 'touchstart, mouseup, pointerdown' - input.eventType = eventType; + return ColorPicker; + })(); - // compute scale, rotation etc - computeInputData(manager, input); + exports['default'] = ColorPicker; + module.exports = exports['default']; - // emit secret event - manager.emit('hammer.input', input); +/***/ }, +/* 73 */ +/***/ function(module, exports, __webpack_require__) { - manager.recognize(input); - manager.session.prevInput = input; - } + 'use strict'; - /** - * extend the data with some usable properties like scale, rotate, velocity etc - * @param {Object} manager - * @param {Object} input - */ - function computeInputData(manager, input) { - var session = manager.session; - var pointers = input.pointers; - var pointersLength = pointers.length; + Object.defineProperty(exports, '__esModule', { + value: true + }); - // store the first input to calculate the distance and direction - if (!session.firstInput) { - session.firstInput = simpleCloneInputData(input); - } + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - // to compute scale and rotation we need to store the multiple touches - if (pointersLength > 1 && !session.firstMultiple) { - session.firstMultiple = simpleCloneInputData(input); - } else if (pointersLength === 1) { - session.firstMultiple = false; - } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var firstInput = session.firstInput; - var firstMultiple = session.firstMultiple; - var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var center = input.center = getCenter(pointers); - input.timeStamp = now(); - input.deltaTime = input.timeStamp - firstInput.timeStamp; + var _sharedLabel = __webpack_require__(74); - input.angle = getAngle(offsetCenter, center); - input.distance = getDistance(offsetCenter, center); + var _sharedLabel2 = _interopRequireDefault(_sharedLabel); - computeDeltaXY(session, input); - input.offsetDirection = getDirection(input.deltaX, input.deltaY); + var _nodesShapesBox = __webpack_require__(89); - input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; - input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + var _nodesShapesBox2 = _interopRequireDefault(_nodesShapesBox); - computeIntervalInputData(session, input); + var _nodesShapesCircle = __webpack_require__(90); - // find the correct target - var target = manager.element; - if (hasParent(input.srcEvent.target, target)) { - target = input.srcEvent.target; - } - input.target = target; - } + var _nodesShapesCircle2 = _interopRequireDefault(_nodesShapesCircle); + + var _nodesShapesCircularImage = __webpack_require__(91); + + var _nodesShapesCircularImage2 = _interopRequireDefault(_nodesShapesCircularImage); + + var _nodesShapesDatabase = __webpack_require__(92); + + var _nodesShapesDatabase2 = _interopRequireDefault(_nodesShapesDatabase); + + var _nodesShapesDiamond = __webpack_require__(93); + + var _nodesShapesDiamond2 = _interopRequireDefault(_nodesShapesDiamond); + + var _nodesShapesDot = __webpack_require__(94); + + var _nodesShapesDot2 = _interopRequireDefault(_nodesShapesDot); - function computeDeltaXY(session, input) { - var center = input.center; - var offset = session.offsetDelta || {}; - var prevDelta = session.prevDelta || {}; - var prevInput = session.prevInput || {}; + var _nodesShapesEllipse = __webpack_require__(95); - if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { - prevDelta = session.prevDelta = { - x: prevInput.deltaX || 0, - y: prevInput.deltaY || 0 - }; + var _nodesShapesEllipse2 = _interopRequireDefault(_nodesShapesEllipse); - offset = session.offsetDelta = { - x: center.x, - y: center.y - }; - } + var _nodesShapesIcon = __webpack_require__(96); - input.deltaX = prevDelta.x + (center.x - offset.x); - input.deltaY = prevDelta.y + (center.y - offset.y); - } + var _nodesShapesIcon2 = _interopRequireDefault(_nodesShapesIcon); - /** - * velocity is calculated every x ms - * @param {Object} session - * @param {Object} input - */ - function computeIntervalInputData(session, input) { - var last = session.lastInterval || input, - deltaTime = input.timeStamp - last.timeStamp, - velocity, velocityX, velocityY, direction; + var _nodesShapesImage = __webpack_require__(97); - if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { - var deltaX = last.deltaX - input.deltaX; - var deltaY = last.deltaY - input.deltaY; + var _nodesShapesImage2 = _interopRequireDefault(_nodesShapesImage); - var v = getVelocity(deltaTime, deltaX, deltaY); - velocityX = v.x; - velocityY = v.y; - velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; - direction = getDirection(deltaX, deltaY); + var _nodesShapesSquare = __webpack_require__(98); - session.lastInterval = input; - } else { - // use latest velocity info if it doesn't overtake a minimum period - velocity = last.velocity; - velocityX = last.velocityX; - velocityY = last.velocityY; - direction = last.direction; - } + var _nodesShapesSquare2 = _interopRequireDefault(_nodesShapesSquare); - input.velocity = velocity; - input.velocityX = velocityX; - input.velocityY = velocityY; - input.direction = direction; - } + var _nodesShapesStar = __webpack_require__(99); - /** - * create a simple clone from the input used for storage of firstInput and firstMultiple - * @param {Object} input - * @returns {Object} clonedInputData - */ - function simpleCloneInputData(input) { - // make a simple copy of the pointers because we will get a reference if we don't - // we only need clientXY for the calculations - var pointers = []; - var i = 0; - while (i < input.pointers.length) { - pointers[i] = { - clientX: round(input.pointers[i].clientX), - clientY: round(input.pointers[i].clientY) - }; - i++; - } + var _nodesShapesStar2 = _interopRequireDefault(_nodesShapesStar); - return { - timeStamp: now(), - pointers: pointers, - center: getCenter(pointers), - deltaX: input.deltaX, - deltaY: input.deltaY - }; - } + var _nodesShapesText = __webpack_require__(100); - /** - * get the center of all the pointers - * @param {Array} pointers - * @return {Object} center contains `x` and `y` properties - */ - function getCenter(pointers) { - var pointersLength = pointers.length; + var _nodesShapesText2 = _interopRequireDefault(_nodesShapesText); - // no need to loop when only one touch - if (pointersLength === 1) { - return { - x: round(pointers[0].clientX), - y: round(pointers[0].clientY) - }; - } + var _nodesShapesTriangle = __webpack_require__(101); - var x = 0, y = 0, i = 0; - while (i < pointersLength) { - x += pointers[i].clientX; - y += pointers[i].clientY; - i++; - } + var _nodesShapesTriangle2 = _interopRequireDefault(_nodesShapesTriangle); - return { - x: round(x / pointersLength), - y: round(y / pointersLength) - }; - } + var _nodesShapesTriangleDown = __webpack_require__(102); - /** - * calculate the velocity between two points. unit is in px per ms. - * @param {Number} deltaTime - * @param {Number} x - * @param {Number} y - * @return {Object} velocity `x` and `y` - */ - function getVelocity(deltaTime, x, y) { - return { - x: x / deltaTime || 0, - y: y / deltaTime || 0 - }; - } + var _nodesShapesTriangleDown2 = _interopRequireDefault(_nodesShapesTriangleDown); - /** - * get the direction between two points - * @param {Number} x - * @param {Number} y - * @return {Number} direction - */ - function getDirection(x, y) { - if (x === y) { - return DIRECTION_NONE; - } + var _Validator = __webpack_require__(46); - if (abs(x) >= abs(y)) { - return x > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return y > 0 ? DIRECTION_UP : DIRECTION_DOWN; - } + var _Validator2 = _interopRequireDefault(_Validator); + + var util = __webpack_require__(1); /** - * calculate the absolute distance between two points - * @param {Object} p1 {x, y} - * @param {Object} p2 {x, y} - * @param {Array} [props] containing x and y keys - * @return {Number} distance + * @class Node + * A node. A node can be connected to other nodes via one or multiple edges. + * @param {object} options An object containing options for the node. All + * options are optional, except for the id. + * {number} id Id of the node. Required + * {string} label Text label for the node + * {number} x Horizontal position of the node + * {number} y Vertical position of the node + * {string} shape Node shape, available: + * "database", "circle", "ellipse", + * "box", "image", "text", "dot", + * "star", "triangle", "triangleDown", + * "square", "icon" + * {string} image An image url + * {string} title An title text, can be HTML + * {anytype} group A group name or number + * @param {Network.Images} imagelist A list with images. Only needed + * when the node has an image + * @param {Network.Groups} grouplist A list with groups. Needed for + * retrieving group options + * @param {Object} constants An object with default values for + * example for the color + * */ - function getDistance(p1, p2, props) { - if (!props) { - props = PROPS_XY; - } - var x = p2[props[0]] - p1[props[0]], - y = p2[props[1]] - p1[props[1]]; - return Math.sqrt((x * x) + (y * y)); - } + var Node = (function () { + function Node(options, body, imagelist, grouplist, globalOptions) { + _classCallCheck(this, Node); - /** - * calculate the angle between two coordinates - * @param {Object} p1 - * @param {Object} p2 - * @param {Array} [props] containing x and y keys - * @return {Number} angle - */ - function getAngle(p1, p2, props) { - if (!props) { - props = PROPS_XY; - } - var x = p2[props[0]] - p1[props[0]], - y = p2[props[1]] - p1[props[1]]; - return Math.atan2(y, x) * 180 / Math.PI; - } + this.options = util.bridgeObject(globalOptions); + this.body = body; - /** - * calculate the rotation degrees between two pointersets - * @param {Array} start array of pointers - * @param {Array} end array of pointers - * @return {Number} rotation - */ - function getRotation(start, end) { - return getAngle(end[1], end[0], PROPS_CLIENT_XY) - getAngle(start[1], start[0], PROPS_CLIENT_XY); - } + this.edges = []; // all edges connected to this node - /** - * calculate the scale factor between two pointersets - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @param {Array} start array of pointers - * @param {Array} end array of pointers - * @return {Number} scale - */ - function getScale(start, end) { - return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); - } + // set defaults for the options + this.id = undefined; + this.imagelist = imagelist; + this.grouplist = grouplist; - var MOUSE_INPUT_MAP = { - mousedown: INPUT_START, - mousemove: INPUT_MOVE, - mouseup: INPUT_END - }; + // state options + this.x = undefined; + this.y = undefined; + this.baseSize = this.options.size; + this.baseFontSize = this.options.font.size; + this.predefinedPosition = false; // used to check if initial fit should just take the range or approximate + this.selected = false; + this.hover = false; - var MOUSE_ELEMENT_EVENTS = 'mousedown'; - var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; + this.labelModule = new _sharedLabel2['default'](this.body, this.options); + this.setOptions(options); + } - /** - * Mouse events input - * @constructor - * @extends Input - */ - function MouseInput() { - this.evEl = MOUSE_ELEMENT_EVENTS; - this.evWin = MOUSE_WINDOW_EVENTS; + _createClass(Node, [{ + key: 'attachEdge', - this.allow = true; // used by Input.TouchMouse to disable mouse events - this.pressed = false; // mousedown state + /** + * Attach a edge to the node + * @param {Edge} edge + */ + value: function attachEdge(edge) { + if (this.edges.indexOf(edge) === -1) { + this.edges.push(edge); + } + } + }, { + key: 'detachEdge', - Input.apply(this, arguments); - } + /** + * Detach a edge from the node + * @param {Edge} edge + */ + value: function detachEdge(edge) { + var index = this.edges.indexOf(edge); + if (index != -1) { + this.edges.splice(index, 1); + } + } + }, { + key: 'togglePhysics', - inherit(MouseInput, Input, { /** - * handle mouse events - * @param {Object} ev + * Enable or disable the physics. + * @param status */ - handler: function MEhandler(ev) { - var eventType = MOUSE_INPUT_MAP[ev.type]; + value: function togglePhysics(status) { + this.options.physics = status; + } + }, { + key: 'setOptions', - // on start we want to have the left mouse button down - if (eventType & INPUT_START && ev.button === 0) { - this.pressed = true; - } + /** + * Set or overwrite options for the node + * @param {Object} options an object with options + * @param {Object} constants and object with default, global options + */ + value: function setOptions(options) { + if (!options) { + return; + } - if (eventType & INPUT_MOVE && ev.which !== 1) { - eventType = INPUT_END; - } + // basic options + if (options.id !== undefined) { + this.id = options.id; + } - // mouse must be down, and mouse events are allowed (see the TouchMouse input) - if (!this.pressed || !this.allow) { - return; - } + if (this.id === undefined) { + throw 'Node must have an id'; + } - if (eventType & INPUT_END) { - this.pressed = false; + if (options.x !== undefined) { + this.x = parseInt(options.x);this.predefinedPosition = true; + } + if (options.y !== undefined) { + this.y = parseInt(options.y);this.predefinedPosition = true; + } + if (options.size !== undefined) { + this.baseSize = options.size; + } + if (options.value !== undefined) { + options.value = parseInt(options.value); + } + + // this transforms all shorthands into fully defined options + Node.parseOptions(this.options, options, true); + + // copy group options + if (typeof options.group === 'number' || typeof options.group === 'string' && options.group != '') { + var groupObj = this.grouplist.get(options.group); + util.deepExtend(this.options, groupObj); + // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. + this.options.color = util.parseColor(this.options.color); + } + + // load the images + if (this.options.image !== undefined && this.options.image != '') { + if (this.imagelist) { + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); + } else { + throw 'No imagelist provided'; } + } - this.callback(this.manager, eventType, { - pointers: [ev], - changedPointers: [ev], - pointerType: INPUT_TYPE_MOUSE, - srcEvent: ev - }); + this.updateShape(); + this.updateLabelModule(); + + // reset the size of the node, this can be changed + this._reset(); } - }); + }, { + key: 'updateLabelModule', + value: function updateLabelModule() { + if (this.options.label === undefined || this.options.label === null) { + this.options.label = ''; + } + this.labelModule.setOptions(this.options, true); + if (this.labelModule.baseSize !== undefined) { + this.baseFontSize = this.labelModule.baseSize; + } + } + }, { + key: 'updateShape', + value: function updateShape() { + // choose draw method depending on the shape + switch (this.options.shape) { + case 'box': + this.shape = new _nodesShapesBox2['default'](this.options, this.body, this.labelModule); + break; + case 'circle': + this.shape = new _nodesShapesCircle2['default'](this.options, this.body, this.labelModule); + break; + case 'circularImage': + this.shape = new _nodesShapesCircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + break; + case 'database': + this.shape = new _nodesShapesDatabase2['default'](this.options, this.body, this.labelModule); + break; + case 'diamond': + this.shape = new _nodesShapesDiamond2['default'](this.options, this.body, this.labelModule); + break; + case 'dot': + this.shape = new _nodesShapesDot2['default'](this.options, this.body, this.labelModule); + break; + case 'ellipse': + this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); + break; + case 'icon': + this.shape = new _nodesShapesIcon2['default'](this.options, this.body, this.labelModule); + break; + case 'image': + this.shape = new _nodesShapesImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + break; + case 'square': + this.shape = new _nodesShapesSquare2['default'](this.options, this.body, this.labelModule); + break; + case 'star': + this.shape = new _nodesShapesStar2['default'](this.options, this.body, this.labelModule); + break; + case 'text': + this.shape = new _nodesShapesText2['default'](this.options, this.body, this.labelModule); + break; + case 'triangle': + this.shape = new _nodesShapesTriangle2['default'](this.options, this.body, this.labelModule); + break; + case 'triangleDown': + this.shape = new _nodesShapesTriangleDown2['default'](this.options, this.body, this.labelModule); + break; + default: + this.shape = new _nodesShapesEllipse2['default'](this.options, this.body, this.labelModule); + break; + } + this._reset(); + } + }, { + key: 'select', - var POINTER_INPUT_MAP = { - pointerdown: INPUT_START, - pointermove: INPUT_MOVE, - pointerup: INPUT_END, - pointercancel: INPUT_CANCEL, - pointerout: INPUT_CANCEL - }; + /** + * select this node + */ + value: function select() { + this.selected = true; + this._reset(); + } + }, { + key: 'unselect', - // in IE10 the pointer types is defined as an enum - var IE10_POINTER_TYPE_ENUM = { - 2: INPUT_TYPE_TOUCH, - 3: INPUT_TYPE_PEN, - 4: INPUT_TYPE_MOUSE, - 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 - }; + /** + * unselect this node + */ + value: function unselect() { + this.selected = false; + this._reset(); + } + }, { + key: '_reset', - var POINTER_ELEMENT_EVENTS = 'pointerdown'; - var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; + /** + * Reset the calculated size of the node, forces it to recalculate its size + * @private + */ + value: function _reset() { + this.shape.width = undefined; + this.shape.height = undefined; + } + }, { + key: 'getTitle', - // IE10 has prefixed support, and case-sensitive - if (window.MSPointerEvent) { - POINTER_ELEMENT_EVENTS = 'MSPointerDown'; - POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; - } + /** + * get the title of this node. + * @return {string} title The title of the node, or undefined when no title + * has been set. + */ + value: function getTitle() { + return this.options.title; + } + }, { + key: 'distanceToBorder', - /** - * Pointer events input - * @constructor - * @extends Input - */ - function PointerEventInput() { - this.evEl = POINTER_ELEMENT_EVENTS; - this.evWin = POINTER_WINDOW_EVENTS; + /** + * Calculate the distance to the border of the Node + * @param {CanvasRenderingContext2D} ctx + * @param {Number} angle Angle in radians + * @returns {number} distance Distance to the border in pixels + */ + value: function distanceToBorder(ctx, angle) { + return this.shape.distanceToBorder(ctx, angle); + } + }, { + key: 'isFixed', + + /** + * Check if this node has a fixed x and y position + * @return {boolean} true if fixed, false if not + */ + value: function isFixed() { + return this.options.fixed.x && this.options.fixed.y; + } + }, { + key: 'isSelected', - Input.apply(this, arguments); + /** + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false + */ + value: function isSelected() { + return this.selected; + } + }, { + key: 'getValue', - this.store = (this.manager.session.pointerEvents = []); - } + /** + * Retrieve the value of the node. Can be undefined + * @return {Number} value + */ + value: function getValue() { + return this.options.value; + } + }, { + key: 'setValueRange', - inherit(PointerEventInput, Input, { /** - * handle mouse events - * @param {Object} ev + * Adjust the value range of the node. The node will adjust it's size + * based on its value. + * @param {Number} min + * @param {Number} max */ - handler: function PEhandler(ev) { - var store = this.store; - var removePointer = false; + value: function setValueRange(min, max, total) { + if (this.options.value !== undefined) { + var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value); + var sizeDiff = this.options.scaling.max - this.options.scaling.min; + if (this.options.scaling.label.enabled === true) { + var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min; + this.options.font.size = this.options.scaling.label.min + scale * fontDiff; + } + this.options.size = this.options.scaling.min + scale * sizeDiff; + } else { + this.options.size = this.baseSize; + this.options.font.size = this.baseFontSize; + } + } + }, { + key: 'draw', - var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); - var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; - var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + /** + * Draw this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + value: function draw(ctx) { + this.shape.draw(ctx, this.x, this.y, this.selected, this.hover); + } + }, { + key: 'resize', - var isTouch = (pointerType == INPUT_TYPE_TOUCH); + /** + * Recalculate the size of this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + value: function resize(ctx) { + this.shape.resize(ctx); + } + }, { + key: 'isOverlappingWith', - // get index of the event in the store - var storeIndex = inArray(store, ev.pointerId, 'pointerId'); + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node + */ + value: function isOverlappingWith(obj) { + return this.shape.left < obj.right && this.shape.left + this.shape.width > obj.left && this.shape.top < obj.bottom && this.shape.top + this.shape.height > obj.top; + } + }, { + key: 'isBoundingBoxOverlappingWith', - // start and mouse must be down - if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { - if (storeIndex < 0) { - store.push(ev); - storeIndex = store.length - 1; - } - } else if (eventType & (INPUT_END | INPUT_CANCEL)) { - removePointer = true; - } + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node + */ + value: function isBoundingBoxOverlappingWith(obj) { + return this.shape.boundingBox.left < obj.right && this.shape.boundingBox.right > obj.left && this.shape.boundingBox.top < obj.bottom && this.shape.boundingBox.bottom > obj.top; + } + }], [{ + key: 'parseOptions', - // it not found, so the pointer hasn't been down (so it's probably a hover) - if (storeIndex < 0) { - return; - } + /** + * This process all possible shorthands in the new options and makes sure that the parentOptions are fully defined. + * Static so it can also be used by the handler. + * @param parentOptions + * @param newOptions + */ + value: function parseOptions(parentOptions, newOptions) { + var allowDeletion = arguments[2] === undefined ? false : arguments[2]; - // update the event in the store - store[storeIndex] = ev; + var fields = ['color', 'fixed', 'shadow']; + util.selectiveNotDeepExtend(fields, parentOptions, newOptions); - this.callback(this.manager, eventType, { - pointers: store, - changedPointers: [ev], - pointerType: pointerType, - srcEvent: ev - }); + // merge the shadow options into the parent. + util.mergeOptions(parentOptions, newOptions, 'shadow'); - if (removePointer) { - // remove from the store - store.splice(storeIndex, 1); + // individual shape newOptions + if (newOptions.color !== undefined && newOptions.color !== null) { + var parsedColor = util.parseColor(newOptions.color); + util.fillIfDefined(parentOptions.color, parsedColor); + } else if (allowDeletion === true) { + parentOptions.color = undefined; + delete parentOptions.color; + } + + if (newOptions.fixed !== undefined && newOptions.fixed !== null) { + if (typeof newOptions.fixed === 'boolean') { + parentOptions.fixed.x = newOptions.fixed; + parentOptions.fixed.y = newOptions.fixed; + } else { + if (newOptions.fixed.x !== undefined && typeof newOptions.fixed.x === 'boolean') { + parentOptions.fixed.x = newOptions.fixed.x; + } + if (newOptions.fixed.y !== undefined && typeof newOptions.fixed.y === 'boolean') { + parentOptions.fixed.y = newOptions.fixed.y; + } } + } } - }); - - var SINGLE_TOUCH_INPUT_MAP = { - touchstart: INPUT_START, - touchmove: INPUT_MOVE, - touchend: INPUT_END, - touchcancel: INPUT_CANCEL - }; - - var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; - var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; + }]); - /** - * Touch events input - * @constructor - * @extends Input - */ - function SingleTouchInput() { - this.evTarget = SINGLE_TOUCH_TARGET_EVENTS; - this.evWin = SINGLE_TOUCH_WINDOW_EVENTS; - this.started = false; + return Node; + })(); - Input.apply(this, arguments); - } + exports['default'] = Node; + module.exports = exports['default']; - inherit(SingleTouchInput, Input, { - handler: function TEhandler(ev) { - var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; +/***/ }, +/* 74 */ +/***/ function(module, exports, __webpack_require__) { - // should we handle the touch events? - if (type === INPUT_START) { - this.started = true; - } + 'use strict'; - if (!this.started) { - return; - } + Object.defineProperty(exports, '__esModule', { + value: true + }); - var touches = normalizeSingleTouches.call(this, ev, type); + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - // when done, reset the started state - if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { - this.started = false; - } + function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } } - this.callback(this.manager, type, { - pointers: touches[0], - changedPointers: touches[1], - pointerType: INPUT_TYPE_TOUCH, - srcEvent: ev - }); - } - }); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - /** - * @this {TouchInput} - * @param {Object} ev - * @param {Number} type flag - * @returns {undefined|Array} [all, changed] - */ - function normalizeSingleTouches(ev, type) { - var all = toArray(ev.touches); - var changed = toArray(ev.changedTouches); + var util = __webpack_require__(1); - if (type & (INPUT_END | INPUT_CANCEL)) { - all = uniqueArray(all.concat(changed), 'identifier', true); - } + var Label = (function () { + function Label(body, options) { + _classCallCheck(this, Label); - return [all, changed]; - } + this.body = body; - var TOUCH_INPUT_MAP = { - touchstart: INPUT_START, - touchmove: INPUT_MOVE, - touchend: INPUT_END, - touchcancel: INPUT_CANCEL - }; + this.baseSize = undefined; + this.setOptions(options); + this.size = { top: 0, left: 0, width: 0, height: 0, yLine: 0 }; // could be cached + } - var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; + _createClass(Label, [{ + key: 'setOptions', + value: function setOptions(options) { + var allowDeletion = arguments[1] === undefined ? false : arguments[1]; - /** - * Multi-user touch events input - * @constructor - * @extends Input - */ - function TouchInput() { - this.evTarget = TOUCH_TARGET_EVENTS; - this.targetIds = {}; + this.options = options; - Input.apply(this, arguments); - } + if (options.label !== undefined) { + this.labelDirty = true; + } - inherit(TouchInput, Input, { - handler: function MTEhandler(ev) { - var type = TOUCH_INPUT_MAP[ev.type]; - var touches = getTouches.call(this, ev, type); - if (!touches) { - return; + if (options.font !== undefined) { + Label.parseOptions(this.options.font, options, allowDeletion); + if (typeof options.font === 'string') { + this.baseSize = this.options.font.size; + } else if (typeof options.font === 'object') { + if (options.font.size !== undefined) { + this.baseSize = options.font.size; + } } - - this.callback(this.manager, type, { - pointers: touches[0], - changedPointers: touches[1], - pointerType: INPUT_TYPE_TOUCH, - srcEvent: ev - }); + } } - }); + }, { + key: 'draw', - /** - * @this {TouchInput} - * @param {Object} ev - * @param {Number} type flag - * @returns {undefined|Array} [all, changed] - */ - function getTouches(ev, type) { - var allTouches = toArray(ev.touches); - var targetIds = this.targetIds; + /** + * Main function. This is called from anything that wants to draw a label. + * @param ctx + * @param x + * @param y + * @param selected + * @param baseline + */ + value: function draw(ctx, x, y, selected) { + var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; - // when there is only one touch, the process can be simplified - if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { - targetIds[allTouches[0].identifier] = true; - return [allTouches, allTouches]; - } + // if no label, return + if (this.options.label === undefined) return; - var i, - targetTouches, - changedTouches = toArray(ev.changedTouches), - changedTargetTouches = [], - target = this.target; + // check if we have to render the label + var viewFontSize = this.options.font.size * this.body.view.scale; + if (this.options.label && viewFontSize < this.options.scaling.label.drawThreshold - 1) return; - // get target touches from touches - targetTouches = allTouches.filter(function(touch) { - return hasParent(touch.target, target); - }); + // update the size cache if required + this.calculateLabelSize(ctx, selected, x, y, baseline); - // collect touches - if (type === INPUT_START) { - i = 0; - while (i < targetTouches.length) { - targetIds[targetTouches[i].identifier] = true; - i++; - } + // create the fontfill background + this._drawBackground(ctx); + // draw text + this._drawText(ctx, selected, x, y, baseline); } + }, { + key: '_drawBackground', - // filter changed touches to only contain touches that exist in the collected target ids - i = 0; - while (i < changedTouches.length) { - if (targetIds[changedTouches[i].identifier]) { - changedTargetTouches.push(changedTouches[i]); - } + /** + * Draws the label background + * @param {CanvasRenderingContext2D} ctx + * @private + */ + value: function _drawBackground(ctx) { + if (this.options.font.background !== undefined && this.options.font.background !== 'none') { + ctx.fillStyle = this.options.font.background; - // cleanup removed touches - if (type & (INPUT_END | INPUT_CANCEL)) { - delete targetIds[changedTouches[i].identifier]; + var lineMargin = 2; + + switch (this.options.font.align) { + case 'middle': + ctx.fillRect(-this.size.width * 0.5, -this.size.height * 0.5, this.size.width, this.size.height); + break; + case 'top': + ctx.fillRect(-this.size.width * 0.5, -(this.size.height + lineMargin), this.size.width, this.size.height); + break; + case 'bottom': + ctx.fillRect(-this.size.width * 0.5, lineMargin, this.size.width, this.size.height); + break; + default: + ctx.fillRect(this.size.left, this.size.top, this.size.width, this.size.height); + break; } - i++; + } } + }, { + key: '_drawText', - if (!changedTargetTouches.length) { - return; - } + /** + * + * @param ctx + * @param x + * @param baseline + * @private + */ + value: function _drawText(ctx, selected, x, y) { + var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; - return [ - // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' - uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), - changedTargetTouches - ]; - } + var fontSize = this.options.font.size; + var viewFontSize = fontSize * this.body.view.scale; + // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) + if (viewFontSize >= this.options.scaling.label.maxVisible) { + fontSize = Number(this.options.scaling.label.maxVisible) / this.body.view.scale; + } - /** - * Combined touch and mouse input - * - * Touch has a higher priority then mouse, and while touching no mouse events are allowed. - * This because touch devices also emit mouse events while doing a touch. - * - * @constructor - * @extends Input - */ - function TouchMouseInput() { - Input.apply(this, arguments); + var yLine = this.size.yLine; - var handler = bindFn(this.handler, this); - this.touch = new TouchInput(this.manager, handler); - this.mouse = new MouseInput(this.manager, handler); - } + var _getColor = this._getColor(viewFontSize); - inherit(TouchMouseInput, Input, { - /** - * handle mouse and touch events - * @param {Hammer} manager - * @param {String} inputEvent - * @param {Object} inputData - */ - handler: function TMEhandler(manager, inputEvent, inputData) { - var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH), - isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE); + var _getColor2 = _slicedToArray(_getColor, 2); - // when we're in a touch event, so block all upcoming mouse events - // most mobile browser also emit mouseevents, right after touchstart - if (isTouch) { - this.mouse.allow = false; - } else if (isMouse && !this.mouse.allow) { - return; - } + var fontColor = _getColor2[0]; + var strokeColor = _getColor2[1]; - // reset the allowMouse when we're done - if (inputEvent & (INPUT_END | INPUT_CANCEL)) { - this.mouse.allow = true; - } + var _setAlignment = this._setAlignment(ctx, x, yLine, baseline); - this.callback(manager, inputEvent, inputData); - }, + var _setAlignment2 = _slicedToArray(_setAlignment, 2); - /** - * remove the event listeners - */ - destroy: function destroy() { - this.touch.destroy(); - this.mouse.destroy(); - } - }); + x = _setAlignment2[0]; + yLine = _setAlignment2[1]; - var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); - var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; + // configure context for drawing the text + ctx.font = (selected ? 'bold ' : '') + fontSize + 'px ' + this.options.font.face; + ctx.fillStyle = fontColor; + ctx.textAlign = 'center'; - // magical touchAction value - var TOUCH_ACTION_COMPUTE = 'compute'; - var TOUCH_ACTION_AUTO = 'auto'; - var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented - var TOUCH_ACTION_NONE = 'none'; - var TOUCH_ACTION_PAN_X = 'pan-x'; - var TOUCH_ACTION_PAN_Y = 'pan-y'; + // set the strokeWidth + if (this.options.font.strokeWidth > 0) { + ctx.lineWidth = this.options.font.strokeWidth; + ctx.strokeStyle = strokeColor; + ctx.lineJoin = 'round'; + } - /** - * Touch Action - * sets the touchAction property or uses the js alternative - * @param {Manager} manager - * @param {String} value - * @constructor - */ - function TouchAction(manager, value) { - this.manager = manager; - this.set(value); - } + // draw the text + for (var i = 0; i < this.lineCount; i++) { + if (this.options.font.strokeWidth > 0) { + ctx.strokeText(this.lines[i], x, yLine); + } + ctx.fillText(this.lines[i], x, yLine); + yLine += fontSize; + } + } + }, { + key: '_setAlignment', + value: function _setAlignment(ctx, x, yLine, baseline) { + // check for label alignment (for edges) + // TODO: make alignment for nodes + if (this.options.font.align !== 'horizontal') { + x = 0; + yLine = 0; - TouchAction.prototype = { - /** - * set the touchAction value on the element or enable the polyfill - * @param {String} value - */ - set: function(value) { - // find out the touch-action by the event handlers - if (value == TOUCH_ACTION_COMPUTE) { - value = this.compute(); + var lineMargin = 2; + if (this.options.font.align === 'top') { + ctx.textBaseline = 'alphabetic'; + yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers + } else if (this.options.font.align === 'bottom') { + ctx.textBaseline = 'hanging'; + yLine += 2 * lineMargin; // distance from edge, required because we use hanging. Hanging has less difference between browsers + } else { + ctx.textBaseline = 'middle'; } + } else { + ctx.textBaseline = baseline; + } - if (NATIVE_TOUCH_ACTION) { - this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; - } - this.actions = value.toLowerCase().trim(); - }, + return [x, yLine]; + } + }, { + key: '_getColor', /** - * just re-set the touchAction value + * fade in when relative scale is between threshold and threshold - 1. + * If the relative scale would be smaller than threshold -1 the draw function would have returned before coming here. + * + * @param viewFontSize + * @returns {*[]} + * @private */ - update: function() { - this.set(this.manager.options.touchAction); - }, + value: function _getColor(viewFontSize) { + var fontColor = this.options.font.color || '#000000'; + var strokeColor = this.options.font.strokeColor || '#ffffff'; + if (viewFontSize <= this.options.scaling.label.drawThreshold) { + var opacity = Math.max(0, Math.min(1, 1 - (this.options.scaling.label.drawThreshold - viewFontSize))); + fontColor = util.overrideOpacity(fontColor, opacity); + strokeColor = util.overrideOpacity(strokeColor, opacity); + } + return [fontColor, strokeColor]; + } + }, { + key: 'getTextSize', /** - * compute the value for the touchAction property based on the recognizer's settings - * @returns {String} value + * + * @param ctx + * @param selected + * @returns {{width: number, height: number}} */ - compute: function() { - var actions = []; - each(this.manager.recognizers, function(recognizer) { - if (boolOrFn(recognizer.options.enable, [recognizer])) { - actions = actions.concat(recognizer.getTouchAction()); - } - }); - return cleanTouchActions(actions.join(' ')); - }, + value: function getTextSize(ctx) { + var selected = arguments[1] === undefined ? false : arguments[1]; + + var size = { + width: this._processLabel(ctx, selected), + height: this.options.font.size * this.lineCount, + lineCount: this.lineCount + }; + return size; + } + }, { + key: 'calculateLabelSize', /** - * this method is called on each input cycle and provides the preventing of the browser behavior - * @param {Object} input + * + * @param ctx + * @param selected + * @param x + * @param y + * @param baseline */ - preventDefaults: function(input) { - // not needed with native support for the touchAction property - if (NATIVE_TOUCH_ACTION) { - return; - } - - var srcEvent = input.srcEvent; - var direction = input.offsetDirection; - - // if the touch action did prevented once this session - if (this.manager.session.prevented) { - srcEvent.preventDefault(); - return; - } + value: function calculateLabelSize(ctx, selected) { + var x = arguments[2] === undefined ? 0 : arguments[2]; + var y = arguments[3] === undefined ? 0 : arguments[3]; + var baseline = arguments[4] === undefined ? 'middle' : arguments[4]; - var actions = this.actions; - var hasNone = inStr(actions, TOUCH_ACTION_NONE); - var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); - var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + if (this.labelDirty === true) { + this.size.width = this._processLabel(ctx, selected); + } + this.size.height = this.options.font.size * this.lineCount; + this.size.left = x - this.size.width * 0.5; + this.size.top = y - this.size.height * 0.5; + this.size.yLine = y + (1 - this.lineCount) * 0.5 * this.options.font.size; + if (baseline === 'hanging') { + this.size.top += 0.5 * this.options.font.size; + this.size.top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers + this.size.yLine += 4; // distance from node + } - if (hasNone || - (hasPanY && direction & DIRECTION_HORIZONTAL) || - (hasPanX && direction & DIRECTION_VERTICAL)) { - return this.preventSrc(srcEvent); - } - }, + this.labelDirty = false; + } + }, { + key: '_processLabel', /** - * call preventDefault to prevent the browser's default behavior (scrolling in most cases) - * @param {Object} srcEvent + * This calculates the width as well as explodes the label string and calculates the amount of lines. + * @param ctx + * @param selected + * @returns {number} + * @private */ - preventSrc: function(srcEvent) { - this.manager.session.prevented = true; - srcEvent.preventDefault(); + value: function _processLabel(ctx, selected) { + var width = 0; + var lines = ['']; + var lineCount = 0; + if (this.options.label !== undefined) { + lines = String(this.options.label).split('\n'); + lineCount = lines.length; + ctx.font = (selected ? 'bold ' : '') + this.options.font.size + 'px ' + this.options.font.face; + width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + } + this.lines = lines; + this.lineCount = lineCount; + + return width; } - }; + }], [{ + key: 'parseOptions', + value: function parseOptions(parentOptions, newOptions) { + var allowDeletion = arguments[2] === undefined ? false : arguments[2]; - /** - * when the touchActions are collected they are not a valid value, so we need to clean things up. * - * @param {String} actions - * @returns {*} - */ - function cleanTouchActions(actions) { - // none - if (inStr(actions, TOUCH_ACTION_NONE)) { - return TOUCH_ACTION_NONE; + if (typeof newOptions.font === 'string') { + var newOptionsArray = newOptions.font.split(' '); + parentOptions.size = newOptionsArray[0].replace('px', ''); + parentOptions.face = newOptionsArray[1]; + parentOptions.color = newOptionsArray[2]; + } else if (typeof newOptions.font === 'object') { + util.fillIfDefined(parentOptions, newOptions.font, allowDeletion); + } + parentOptions.size = Number(parentOptions.size); } + }]); - var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); - var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + return Label; + })(); - // pan-x and pan-y can be combined - if (hasPanX && hasPanY) { - return TOUCH_ACTION_PAN_X + ' ' + TOUCH_ACTION_PAN_Y; - } + exports['default'] = Label; + module.exports = exports['default']; - // pan-x OR pan-y - if (hasPanX || hasPanY) { - return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; - } +/***/ }, +/* 75 */ +/***/ function(module, exports, __webpack_require__) { - // manipulation - if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { - return TOUCH_ACTION_MANIPULATION; - } + 'use strict'; - return TOUCH_ACTION_AUTO; - } + Object.defineProperty(exports, '__esModule', { + value: true + }); - /** - * Recognizer flow explained; * - * All recognizers have the initial state of POSSIBLE when a input session starts. - * The definition of a input session is from the first input until the last input, with all it's movement in it. * - * Example session for mouse-input: mousedown -> mousemove -> mouseup - * - * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed - * which determines with state it should be. - * - * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to - * POSSIBLE to give it another change on the next cycle. - * - * Possible - * | - * +-----+---------------+ - * | | - * +-----+-----+ | - * | | | - * Failed Cancelled | - * +-------+------+ - * | | - * Recognized Began - * | - * Changed - * | - * Ended/Recognized - */ - var STATE_POSSIBLE = 1; - var STATE_BEGAN = 2; - var STATE_CHANGED = 4; - var STATE_ENDED = 8; - var STATE_RECOGNIZED = STATE_ENDED; - var STATE_CANCELLED = 16; - var STATE_FAILED = 32; + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - /** - * Recognizer - * Every recognizer needs to extend from this class. - * @constructor - * @param {Object} options - */ - function Recognizer(options) { - this.id = uniqueId(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - this.manager = null; - this.options = merge(options || {}, this.defaults); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - // default is enable true - this.options.enable = ifUndefined(this.options.enable, true); + var _sharedLabel = __webpack_require__(74); - this.state = STATE_POSSIBLE; + var _sharedLabel2 = _interopRequireDefault(_sharedLabel); - this.simultaneous = {}; - this.requireFail = []; - } + var _edgesBezierEdgeDynamic = __webpack_require__(103); - Recognizer.prototype = { - /** - * @virtual - * @type {Object} - */ - defaults: {}, + var _edgesBezierEdgeDynamic2 = _interopRequireDefault(_edgesBezierEdgeDynamic); - /** - * set options - * @param {Object} options - * @return {Recognizer} - */ - set: function(options) { - extend(this.options, options); + var _edgesBezierEdgeStatic = __webpack_require__(104); - // also update the touchAction, in case something changed about the directions/enabled state - this.manager && this.manager.touchAction.update(); - return this; - }, + var _edgesBezierEdgeStatic2 = _interopRequireDefault(_edgesBezierEdgeStatic); - /** - * recognize simultaneous with an other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - recognizeWith: function(otherRecognizer) { - if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { - return this; - } + var _edgesStraightEdge = __webpack_require__(105); - var simultaneous = this.simultaneous; - otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); - if (!simultaneous[otherRecognizer.id]) { - simultaneous[otherRecognizer.id] = otherRecognizer; - otherRecognizer.recognizeWith(this); - } - return this; - }, + var _edgesStraightEdge2 = _interopRequireDefault(_edgesStraightEdge); - /** - * drop the simultaneous link. it doesnt remove the link on the other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - dropRecognizeWith: function(otherRecognizer) { - if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { - return this; - } + var util = __webpack_require__(1); - otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); - delete this.simultaneous[otherRecognizer.id]; - return this; - }, + /** + * @class Edge + * + * A edge connects two nodes + * @param {Object} properties Object with options. Must contain + * At least options from and to. + * Available options: from (number), + * to (number), label (string, color (string), + * width (number), style (string), + * length (number), title (string) + * @param {Network} network A Network object, used to find and edge to + * nodes. + * @param {Object} constants An object with default values for + * example for the color + */ - /** - * recognizer can only run when an other is failing - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - requireFailure: function(otherRecognizer) { - if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { - return this; - } + var Edge = (function () { + function Edge(options, body, globalOptions) { + _classCallCheck(this, Edge); - var requireFail = this.requireFail; - otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); - if (inArray(requireFail, otherRecognizer) === -1) { - requireFail.push(otherRecognizer); - otherRecognizer.requireFailure(this); - } - return this; - }, + if (body === undefined) { + throw 'No body provided'; + } + this.options = util.bridgeObject(globalOptions); + this.body = body; - /** - * drop the requireFailure link. it does not remove the link on the other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - dropRequireFailure: function(otherRecognizer) { - if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { - return this; - } + // initialize variables + this.id = undefined; + this.fromId = undefined; + this.toId = undefined; + this.selected = false; + this.hover = false; + this.labelDirty = true; + this.colorDirty = true; - otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); - var index = inArray(this.requireFail, otherRecognizer); - if (index > -1) { - this.requireFail.splice(index, 1); - } - return this; - }, + this.baseWidth = this.options.width; + this.baseFontSize = this.options.font.size; - /** - * has require failures boolean - * @returns {boolean} - */ - hasRequireFailures: function() { - return this.requireFail.length > 0; - }, + this.from = undefined; // a node + this.to = undefined; // a node - /** - * if the recognizer can recognize simultaneous with an other recognizer - * @param {Recognizer} otherRecognizer - * @returns {Boolean} - */ - canRecognizeWith: function(otherRecognizer) { - return !!this.simultaneous[otherRecognizer.id]; - }, + this.edgeType = undefined; + + this.connected = false; + + this.labelModule = new _sharedLabel2['default'](this.body, this.options); + + this.setOptions(options); + } + + _createClass(Edge, [{ + key: 'setOptions', /** - * You should use `tryEmit` instead of `emit` directly to check - * that all the needed recognizers has failed before emitting. - * @param {Object} input + * Set or overwrite options for the edge + * @param {Object} options an object with options + * @param doNotEmit */ - emit: function(input) { - var self = this; - var state = this.state; + value: function setOptions(options) { + if (!options) { + return; + } + this.colorDirty = true; - function emit(withState) { - self.manager.emit(self.options.event + (withState ? stateStr(state) : ''), input); - } + Edge.parseOptions(this.options, options, true); - // 'panstart' and 'panmove' - if (state < STATE_ENDED) { - emit(true); - } + if (options.id !== undefined) { + this.id = options.id; + } + if (options.from !== undefined) { + this.fromId = options.from; + } + if (options.to !== undefined) { + this.toId = options.to; + } + if (options.title !== undefined) { + this.title = options.title; + } + if (options.value !== undefined) { + options.value = parseInt(options.value); + } - emit(); // simple 'eventName' events + // A node is connected when it has a from and to node that both exist in the network.body.nodes. + this.connect(); - // panend and pancancel - if (state >= STATE_ENDED) { - emit(true); - } - }, + // update label Module + this.updateLabelModule(); + + var dataChanged = this.updateEdgeType(); + + // if anything has been updates, reset the selection width and the hover width + this._setInteractionWidths(); + + return dataChanged; + } + }, { + key: 'updateLabelModule', /** - * Check that all the require failure recognizers has failed, - * if true, it emits a gesture event, - * otherwise, setup the state to FAILED. - * @param {Object} input + * update the options in the label module */ - tryEmit: function(input) { - if (this.canEmit()) { - return this.emit(input); - } - // it's failing anyway - this.state = STATE_FAILED; - }, + value: function updateLabelModule() { + this.labelModule.setOptions(this.options, true); + if (this.labelModule.baseSize !== undefined) { + this.baseFontSize = this.labelModule.baseSize; + } + } + }, { + key: 'updateEdgeType', /** - * can we emit? + * update the edge type, set the options * @returns {boolean} */ - canEmit: function() { - var i = 0; - while (i < this.requireFail.length) { - if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { - return false; - } - i++; + value: function updateEdgeType() { + var dataChanged = false; + var changeInType = true; + if (this.edgeType !== undefined) { + if (this.edgeType instanceof _edgesBezierEdgeDynamic2['default'] && this.options.smooth.enabled === true && this.options.smooth.dynamic === true) { + changeInType = false; } - return true; - }, - - /** - * update the recognizer - * @param {Object} inputData - */ - recognize: function(inputData) { - // make a new copy of the inputData - // so we can change the inputData without messing up the other recognizers - var inputDataClone = extend({}, inputData); - - // is is enabled and allow recognizing? - if (!boolOrFn(this.options.enable, [this, inputDataClone])) { - this.reset(); - this.state = STATE_FAILED; - return; + if (this.edgeType instanceof _edgesBezierEdgeStatic2['default'] && this.options.smooth.enabled === true && this.options.smooth.dynamic === false) { + changeInType = false; } - - // reset when we've reached the end - if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { - this.state = STATE_POSSIBLE; + if (this.edgeType instanceof _edgesStraightEdge2['default'] && this.options.smooth.enabled === false) { + changeInType = false; } - this.state = this.process(inputDataClone); + if (changeInType === true) { + dataChanged = this.edgeType.cleanup(); + } + } - // the recognizer has recognized a gesture - // so trigger an event - if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { - this.tryEmit(inputDataClone); + if (changeInType === true) { + if (this.options.smooth.enabled === true) { + if (this.options.smooth.dynamic === true) { + dataChanged = true; + this.edgeType = new _edgesBezierEdgeDynamic2['default'](this.options, this.body, this.labelModule); + } else { + this.edgeType = new _edgesBezierEdgeStatic2['default'](this.options, this.body, this.labelModule); + } + } else { + this.edgeType = new _edgesStraightEdge2['default'](this.options, this.body, this.labelModule); } - }, + } else { + // if nothing changes, we just set the options. + this.edgeType.setOptions(this.options); + } + + return dataChanged; + } + }, { + key: 'togglePhysics', /** - * return the state of the recognizer - * the actual recognizing happens in this method - * @virtual - * @param {Object} inputData - * @returns {Const} STATE + * Enable or disable the physics. + * @param status */ - process: function(inputData) { }, // jshint ignore:line + value: function togglePhysics(status) { + this.options.physics = status; + this.edgeType.togglePhysics(status); + } + }, { + key: 'connect', /** - * return the preferred touch-action - * @virtual - * @returns {Array} + * Connect an edge to its nodes */ - getTouchAction: function() { }, + value: function connect() { + this.disconnect(); + + this.from = this.body.nodes[this.fromId] || undefined; + this.to = this.body.nodes[this.toId] || undefined; + this.connected = this.from !== undefined && this.to !== undefined; + + if (this.connected === true) { + this.from.attachEdge(this); + this.to.attachEdge(this); + } else { + if (this.from) { + this.from.detachEdge(this); + } + if (this.to) { + this.to.detachEdge(this); + } + } + } + }, { + key: 'disconnect', /** - * called when the gesture isn't allowed to recognize - * like when another is being recognized or it is disabled - * @virtual + * Disconnect an edge from its nodes */ - reset: function() { } - }; + value: function disconnect() { + if (this.from) { + this.from.detachEdge(this); + this.from = undefined; + } + if (this.to) { + this.to.detachEdge(this); + this.to = undefined; + } - /** - * get a usable string, used as event postfix - * @param {Const} state - * @returns {String} state - */ - function stateStr(state) { - if (state & STATE_CANCELLED) { - return 'cancel'; - } else if (state & STATE_ENDED) { - return 'end'; - } else if (state & STATE_CHANGED) { - return 'move'; - } else if (state & STATE_BEGAN) { - return 'start'; + this.connected = false; } - return ''; - } + }, { + key: 'getTitle', - /** - * direction cons to string - * @param {Const} direction - * @returns {String} - */ - function directionStr(direction) { - if (direction == DIRECTION_DOWN) { - return 'down'; - } else if (direction == DIRECTION_UP) { - return 'up'; - } else if (direction == DIRECTION_LEFT) { - return 'left'; - } else if (direction == DIRECTION_RIGHT) { - return 'right'; + /** + * get the title of this edge. + * @return {string} title The title of the edge, or undefined when no title + * has been set. + */ + value: function getTitle() { + return this.title; } - return ''; - } + }, { + key: 'isSelected', - /** - * get a recognizer by name if it is bound to a manager - * @param {Recognizer|String} otherRecognizer - * @param {Recognizer} recognizer - * @returns {Recognizer} - */ - function getRecognizerByNameIfManager(otherRecognizer, recognizer) { - var manager = recognizer.manager; - if (manager) { - return manager.get(otherRecognizer); + /** + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false + */ + value: function isSelected() { + return this.selected; } - return otherRecognizer; - } - - /** - * This recognizer is just used as a base for the simple attribute recognizers. - * @constructor - * @extends Recognizer - */ - function AttrRecognizer() { - Recognizer.apply(this, arguments); - } + }, { + key: 'getValue', - inherit(AttrRecognizer, Recognizer, { /** - * @namespace - * @memberof AttrRecognizer + * Retrieve the value of the edge. Can be undefined + * @return {Number} value */ - defaults: { - /** - * @type {Number} - * @default 1 - */ - pointers: 1 - }, + value: function getValue() { + return this.options.value; + } + }, { + key: 'setValueRange', /** - * Used to check if it the recognizer receives valid input, like input.distance > 10. - * @memberof AttrRecognizer - * @param {Object} input - * @returns {Boolean} recognized + * Adjust the value range of the edge. The edge will adjust it's width + * based on its value. + * @param {Number} min + * @param {Number} max + * @param total */ - attrTest: function(input) { - var optionPointers = this.options.pointers; - return optionPointers === 0 || input.pointers.length === optionPointers; - }, + value: function setValueRange(min, max, total) { + if (this.options.value !== undefined) { + var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value); + var widthDiff = this.options.scaling.max - this.options.scaling.min; + if (this.options.scaling.label.enabled === true) { + var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min; + this.options.font.size = this.options.scaling.label.min + scale * fontDiff; + } + this.options.width = this.options.scaling.min + scale * widthDiff; + } else { + this.options.width = this.baseWidth; + this.options.font.size = this.baseFontSize; + } + + this._setInteractionWidths(); + } + }, { + key: '_setInteractionWidths', + value: function _setInteractionWidths() { + if (typeof this.options.hoverWidth === 'function') { + this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width); + } else { + this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width; + } + + if (typeof this.options.selectionWidth === 'function') { + this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width); + } else { + this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width; + } + } + }, { + key: 'draw', /** - * Process the input and return the state for the recognizer - * @memberof AttrRecognizer - * @param {Object} input - * @returns {*} State + * Redraw a edge + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx */ - process: function(input) { - var state = this.state; - var eventType = input.eventType; + value: function draw(ctx) { + var via = this.edgeType.drawLine(ctx, this.selected, this.hover); + this.drawArrows(ctx, via); + this.drawLabel(ctx, via); + } + }, { + key: 'drawArrows', + value: function drawArrows(ctx, viaNode) { + if (this.options.arrows.from.enabled === true) { + this.edgeType.drawArrowHead(ctx, 'from', viaNode, this.selected, this.hover); + } + if (this.options.arrows.middle.enabled === true) { + this.edgeType.drawArrowHead(ctx, 'middle', viaNode, this.selected, this.hover); + } + if (this.options.arrows.to.enabled === true) { + this.edgeType.drawArrowHead(ctx, 'to', viaNode, this.selected, this.hover); + } + } + }, { + key: 'drawLabel', + value: function drawLabel(ctx, viaNode) { + if (this.options.label !== undefined) { + // set style + var node1 = this.from; + var node2 = this.to; + var selected = this.from.selected || this.to.selected || this.selected; + if (node1.id != node2.id) { + var point = this.edgeType.getPoint(0.5, viaNode); + ctx.save(); - var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); - var isValid = this.attrTest(input); + // if the label has to be rotated: + if (this.options.font.align !== 'horizontal') { + this.labelModule.calculateLabelSize(ctx, selected, point.x, point.y); + ctx.translate(point.x, this.labelModule.size.yLine); + this._rotateForLabelAlignment(ctx); + } - // on cancel input and we've recognized before, return STATE_CANCELLED - if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { - return state | STATE_CANCELLED; - } else if (isRecognized || isValid) { - if (eventType & INPUT_END) { - return state | STATE_ENDED; - } else if (!(state & STATE_BEGAN)) { - return STATE_BEGAN; - } - return state | STATE_CHANGED; + // draw the label + this.labelModule.draw(ctx, point.x, point.y, selected); + ctx.restore(); + } else { + var x, y; + var radius = this.options.selfReferenceSize; + if (node1.shape.width > node1.shape.height) { + x = node1.x + node1.shape.width * 0.5; + y = node1.y - radius; + } else { + x = node1.x + radius; + y = node1.y - node1.shape.height * 0.5; + } + point = this._pointOnCircle(x, y, radius, 0.125); + this.labelModule.draw(ctx, point.x, point.y, selected); } - return STATE_FAILED; + } } - }); + }, { + key: 'isOverlappingWith', - /** - * Pan - * Recognized when the pointer is down and moved in the allowed direction. - * @constructor - * @extends AttrRecognizer - */ - function PanRecognizer() { - AttrRecognizer.apply(this, arguments); + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top + * @return {boolean} True if location is located on the edge + */ + value: function isOverlappingWith(obj) { + if (this.connected) { + var distMax = 10; + var xFrom = this.from.x; + var yFrom = this.from.y; + var xTo = this.to.x; + var yTo = this.to.y; + var xObj = obj.left; + var yObj = obj.top; - this.pX = null; - this.pY = null; - } + var dist = this.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); + + return dist < distMax; + } else { + return false; + } + } + }, { + key: '_rotateForLabelAlignment', - inherit(PanRecognizer, AttrRecognizer, { /** - * @namespace - * @memberof PanRecognizer + * Rotates the canvas so the text is most readable + * @param {CanvasRenderingContext2D} ctx + * @private */ - defaults: { - event: 'pan', - threshold: 10, - pointers: 1, - direction: DIRECTION_ALL - }, - - getTouchAction: function() { - var direction = this.options.direction; - var actions = []; - if (direction & DIRECTION_HORIZONTAL) { - actions.push(TOUCH_ACTION_PAN_Y); - } - if (direction & DIRECTION_VERTICAL) { - actions.push(TOUCH_ACTION_PAN_X); - } - return actions; - }, + value: function _rotateForLabelAlignment(ctx) { + var dy = this.from.y - this.to.y; + var dx = this.from.x - this.to.x; + var angleInDegrees = Math.atan2(dy, dx); - directionTest: function(input) { - var options = this.options; - var hasMoved = true; - var distance = input.distance; - var direction = input.direction; - var x = input.deltaX; - var y = input.deltaY; + // rotate so label it is readable + if (angleInDegrees < -1 && dx < 0 || angleInDegrees > 0 && dx < 0) { + angleInDegrees = angleInDegrees + Math.PI; + } - // lock to axis? - if (!(direction & options.direction)) { - if (options.direction & DIRECTION_HORIZONTAL) { - direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - hasMoved = x != this.pX; - distance = Math.abs(input.deltaX); - } else { - direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN; - hasMoved = y != this.pY; - distance = Math.abs(input.deltaY); - } - } - input.direction = direction; - return hasMoved && distance > options.threshold && direction & options.direction; - }, + ctx.rotate(angleInDegrees); + } + }, { + key: '_pointOnCircle', - attrTest: function(input) { - return AttrRecognizer.prototype.attrTest.call(this, input) && - (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input))); - }, + /** + * Get a point on a circle + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ + value: function _pointOnCircle(x, y, radius, percentage) { + var angle = percentage * 2 * Math.PI; + return { + x: x + radius * Math.cos(angle), + y: y - radius * Math.sin(angle) + }; + } + }, { + key: 'select', + value: function select() { + this.selected = true; + } + }, { + key: 'unselect', + value: function unselect() { + this.selected = false; + } + }], [{ + key: 'parseOptions', + value: function parseOptions(parentOptions, newOptions) { + var allowDeletion = arguments[2] === undefined ? false : arguments[2]; - emit: function(input) { - this.pX = input.deltaX; - this.pY = input.deltaY; + var fields = ['id', 'font', 'from', 'hidden', 'hoverWidth', 'label', 'length', 'line', 'opacity', 'physics', 'selectionWidth', 'selfReferenceSize', 'to', 'title', 'value', 'width']; - var direction = directionStr(input.direction); - if (direction) { - this.manager.emit(this.options.event + direction, input); - } + // only deep extend the items in the field array. These do not have shorthand. + util.selectiveDeepExtend(fields, parentOptions, newOptions, allowDeletion); - this._super.emit.call(this, input); - } - }); + util.mergeOptions(parentOptions, newOptions, 'smooth'); + util.mergeOptions(parentOptions, newOptions, 'shadow'); - /** - * Pinch - * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). - * @constructor - * @extends AttrRecognizer - */ - function PinchRecognizer() { - AttrRecognizer.apply(this, arguments); - } + if (newOptions.dashes !== undefined && newOptions.dashes !== null) { + parentOptions.dashes = newOptions.dashes; + } else if (allowDeletion === true) { + parentOptions.dashes = undefined; + delete parentOptions.dashes; + } - inherit(PinchRecognizer, AttrRecognizer, { - /** - * @namespace - * @memberof PinchRecognizer - */ - defaults: { - event: 'pinch', - threshold: 0, - pointers: 2 - }, + // set the scaling newOptions + if (newOptions.scaling !== undefined && newOptions.scaling !== null) { + if (newOptions.scaling.min !== undefined) { + parentOptions.scaling.min = newOptions.scaling.min; + } + if (newOptions.scaling.max !== undefined) { + parentOptions.scaling.max = newOptions.scaling.max; + } + util.mergeOptions(parentOptions.scaling, newOptions.scaling, 'label'); + } else if (allowDeletion === true) { + parentOptions.scaling = undefined; + delete parentOptions.scaling; + } - getTouchAction: function() { - return [TOUCH_ACTION_NONE]; - }, + // hanlde multiple input cases for arrows + if (newOptions.arrows !== undefined && newOptions.arrows !== null) { + if (typeof newOptions.arrows === 'string') { + var arrows = newOptions.arrows.toLowerCase(); + if (arrows.indexOf('to') != -1) { + parentOptions.arrows.to.enabled = true; + } + if (arrows.indexOf('middle') != -1) { + parentOptions.arrows.middle.enabled = true; + } + if (arrows.indexOf('from') != -1) { + parentOptions.arrows.from.enabled = true; + } + } else if (typeof newOptions.arrows === 'object') { + util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'to'); + util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'middle'); + util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'from'); + } else { + throw new Error('The arrow newOptions can only be an object or a string. Refer to the documentation. You used:' + JSON.stringify(newOptions.arrows)); + } + } else if (allowDeletion === true) { + parentOptions.arrows = undefined; + delete parentOptions.arrows; + } - attrTest: function(input) { - return this._super.attrTest.call(this, input) && - (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); - }, + // hanlde multiple input cases for color + if (newOptions.color !== undefined && newOptions.color !== null) { + if (util.isString(newOptions.color)) { + parentOptions.color.color = newOptions.color; + parentOptions.color.highlight = newOptions.color; + parentOptions.color.hover = newOptions.color; + parentOptions.color.inherit = false; + } else { + var colorsDefined = false; + if (newOptions.color.color !== undefined) { + parentOptions.color.color = newOptions.color.color;colorsDefined = true; + } + if (newOptions.color.highlight !== undefined) { + parentOptions.color.highlight = newOptions.color.highlight;colorsDefined = true; + } + if (newOptions.color.hover !== undefined) { + parentOptions.color.hover = newOptions.color.hover;colorsDefined = true; + } + if (newOptions.color.inherit !== undefined) { + parentOptions.color.inherit = newOptions.color.inherit; + } + if (newOptions.color.opacity !== undefined) { + parentOptions.color.opacity = Math.min(1, Math.max(0, newOptions.color.opacity)); + } - emit: function(input) { - this._super.emit.call(this, input); - if (input.scale !== 1) { - var inOut = input.scale < 1 ? 'in' : 'out'; - this.manager.emit(this.options.event + inOut, input); + if (newOptions.color.inherit === undefined && colorsDefined === true) { + parentOptions.color.inherit = false; + } } + } else if (allowDeletion === true) { + parentOptions.color = undefined; + delete parentOptions.color; + } } - }); + }]); - /** - * Press - * Recognized when the pointer is down for x ms without any movement. - * @constructor - * @extends Recognizer - */ - function PressRecognizer() { - Recognizer.apply(this, arguments); + return Edge; + })(); - this._timer = null; - this._input = null; - } + exports['default'] = Edge; + module.exports = exports['default']; - inherit(PressRecognizer, Recognizer, { - /** - * @namespace - * @memberof PressRecognizer - */ - defaults: { - event: 'press', - pointers: 1, - time: 500, // minimal time of the pointer to be pressed - threshold: 5 // a minimal movement is ok, but keep it low - }, +/***/ }, +/* 76 */ +/***/ function(module, exports, __webpack_require__) { - getTouchAction: function() { - return [TOUCH_ACTION_AUTO]; - }, + "use strict"; - process: function(input) { - var options = this.options; - var validPointers = input.pointers.length === options.pointers; - var validMovement = input.distance < options.threshold; - var validTime = input.deltaTime > options.time; + Object.defineProperty(exports, "__esModule", { + value: true + }); - this._input = input; + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - // we only allow little movement - // and we've reached an end event, so a tap is possible - if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) { - this.reset(); - } else if (input.eventType & INPUT_START) { - this.reset(); - this._timer = setTimeoutContext(function() { - this.state = STATE_RECOGNIZED; - this.tryEmit(); - }, options.time, this); - } else if (input.eventType & INPUT_END) { - return STATE_RECOGNIZED; - } - return STATE_FAILED; - }, + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - reset: function() { - clearTimeout(this._timer); - }, + var BarnesHutSolver = (function () { + function BarnesHutSolver(body, physicsBody, options) { + _classCallCheck(this, BarnesHutSolver); - emit: function(input) { - if (this.state !== STATE_RECOGNIZED) { - return; - } + this.body = body; + this.physicsBody = physicsBody; + this.barnesHutTree; + this.setOptions(options); + } - if (input && (input.eventType & INPUT_END)) { - this.manager.emit(this.options.event + 'up', input); - } else { - this._input.timeStamp = now(); - this.manager.emit(this.options.event, this._input); - } + _createClass(BarnesHutSolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; + this.thetaInversed = 1 / this.options.theta; } - }); - - /** - * Rotate - * Recognized when two or more pointer are moving in a circular motion. - * @constructor - * @extends AttrRecognizer - */ - function RotateRecognizer() { - AttrRecognizer.apply(this, arguments); - } + }, { + key: "solve", - inherit(RotateRecognizer, AttrRecognizer, { /** - * @namespace - * @memberof RotateRecognizer + * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * The Barnes Hut method is used to speed up this N-body simulation. + * + * @private */ - defaults: { - event: 'rotate', - threshold: 0, - pointers: 2 - }, + value: function solve() { + if (this.options.gravitationalConstant != 0) { + var node; + var nodes = this.body.nodes; + var nodeIndices = this.physicsBody.physicsNodeIndices; + var nodeCount = nodeIndices.length; - getTouchAction: function() { - return [TOUCH_ACTION_NONE]; - }, + // create the tree + var barnesHutTree = this._formBarnesHutTree(nodes, nodeIndices); - attrTest: function(input) { - return this._super.attrTest.call(this, input) && - (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); - } - }); + // for debugging + this.barnesHutTree = barnesHutTree; - /** - * Swipe - * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. - * @constructor - * @extends AttrRecognizer - */ - function SwipeRecognizer() { - AttrRecognizer.apply(this, arguments); - } + // place the nodes one by one recursively + for (var i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + // starting with root is irrelevant, it never passes the BarnesHutSolver condition + this._getForceContribution(barnesHutTree.root.children.NW, node); + this._getForceContribution(barnesHutTree.root.children.NE, node); + this._getForceContribution(barnesHutTree.root.children.SW, node); + this._getForceContribution(barnesHutTree.root.children.SE, node); + } + } + } + } + }, { + key: "_getForceContribution", - inherit(SwipeRecognizer, AttrRecognizer, { /** - * @namespace - * @memberof SwipeRecognizer + * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. + * If a region contains a single node, we check if it is not itself, then we apply the force. + * + * @param parentBranch + * @param node + * @private */ - defaults: { - event: 'swipe', - threshold: 10, - velocity: 0.65, - direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, - pointers: 1 - }, - - getTouchAction: function() { - return PanRecognizer.prototype.getTouchAction.call(this); - }, - - attrTest: function(input) { - var direction = this.options.direction; - var velocity; - - if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { - velocity = input.velocity; - } else if (direction & DIRECTION_HORIZONTAL) { - velocity = input.velocityX; - } else if (direction & DIRECTION_VERTICAL) { - velocity = input.velocityY; - } + value: function _getForceContribution(parentBranch, node) { + // we get no force contribution from an empty region + if (parentBranch.childrenCount > 0) { + var dx, dy, distance; - return this._super.attrTest.call(this, input) && - direction & input.direction && - input.distance > this.options.threshold && - abs(velocity) > this.options.velocity && input.eventType & INPUT_END; - }, + // get the distance from the center of mass to the node. + dx = parentBranch.centerOfMass.x - node.x; + dy = parentBranch.centerOfMass.y - node.y; + distance = Math.sqrt(dx * dx + dy * dy); - emit: function(input) { - var direction = directionStr(input.direction); - if (direction) { - this.manager.emit(this.options.event + direction, input); + // BarnesHutSolver condition + // original condition : s/d < theta = passed === d/s > 1/theta = passed + // calcSize = 1/s --> d * 1/s > 1/theta = passed + if (distance * parentBranch.calcSize > this.thetaInversed) { + this._calculateForces(distance, dx, dy, node, parentBranch); + } else { + // Did not pass the condition, go into children if available + if (parentBranch.childrenCount === 4) { + this._getForceContribution(parentBranch.children.NW, node); + this._getForceContribution(parentBranch.children.NE, node); + this._getForceContribution(parentBranch.children.SW, node); + this._getForceContribution(parentBranch.children.SE, node); + } else { + // parentBranch must have only one node, if it was empty we wouldnt be here + if (parentBranch.children.data.id != node.id) { + // if it is not self + this._calculateForces(distance, dx, dy, node, parentBranch); + } + } } - - this.manager.emit(this.options.event, input); + } } - }); - - /** - * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur - * between the given interval and position. The delay option can be used to recognize multi-taps without firing - * a single tap. - * - * The eventData from the emitted event contains the property `tapCount`, which contains the amount of - * multi-taps being recognized. - * @constructor - * @extends Recognizer - */ - function TapRecognizer() { - Recognizer.apply(this, arguments); - - // previous time and center, - // used for tap counting - this.pTime = false; - this.pCenter = false; - - this._timer = null; - this._input = null; - this.count = 0; - } + }, { + key: "_calculateForces", - inherit(TapRecognizer, Recognizer, { /** - * @namespace - * @memberof PinchRecognizer + * Calculate the forces based on the distance. + * + * @param distance + * @param dx + * @param dy + * @param node + * @param parentBranch + * @private */ - defaults: { - event: 'tap', - pointers: 1, - taps: 1, - interval: 300, // max time between the multi-tap taps - time: 250, // max time of the pointer to be down (like finger on the screen) - threshold: 2, // a minimal movement is ok, but keep it low - posThreshold: 10 // a multi-tap can be a bit off the initial position - }, - - getTouchAction: function() { - return [TOUCH_ACTION_MANIPULATION]; - }, + value: function _calculateForces(distance, dx, dy, node, parentBranch) { + // duplicate code to reduce function calls to speed up program + if (distance === 0) { + distance = 0.1 * Math.random(); + dx = distance; + } + var gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; - process: function(input) { - var options = this.options; + this.physicsBody.forces[node.id].x += fx; + this.physicsBody.forces[node.id].y += fy; + } + }, { + key: "_formBarnesHutTree", - var validPointers = input.pointers.length === options.pointers; - var validMovement = input.distance < options.threshold; - var validTouchTime = input.deltaTime < options.time; + /** + * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * + * @param nodes + * @param nodeIndices + * @private + */ + value: function _formBarnesHutTree(nodes, nodeIndices) { + var node; + var nodeCount = nodeIndices.length; - this.reset(); + var minX = Number.MAX_VALUE, + minY = Number.MAX_VALUE, + maxX = -Number.MAX_VALUE, + maxY = -Number.MAX_VALUE; - if ((input.eventType & INPUT_START) && (this.count === 0)) { - return this.failTimeout(); + // get the range of the nodes + for (var i = 0; i < nodeCount; i++) { + var x = nodes[nodeIndices[i]].x; + var y = nodes[nodeIndices[i]].y; + if (nodes[nodeIndices[i]].options.mass > 0) { + if (x < minX) { + minX = x; + } + if (x > maxX) { + maxX = x; + } + if (y < minY) { + minY = y; + } + if (y > maxY) { + maxY = y; + } } + } + // make the range a square + var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y + if (sizeDiff > 0) { + minY -= 0.5 * sizeDiff; + maxY += 0.5 * sizeDiff; + } // xSize > ySize + else { + minX += 0.5 * sizeDiff; + maxX -= 0.5 * sizeDiff; + } // xSize < ySize - // we only allow little movement - // and we've reached an end event, so a tap is possible - if (validMovement && validTouchTime && validPointers) { - if (input.eventType != INPUT_END) { - return this.failTimeout(); - } - - var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true; - var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; - - this.pTime = input.timeStamp; - this.pCenter = input.center; - - if (!validMultiTap || !validInterval) { - this.count = 1; - } else { - this.count += 1; - } - - this._input = input; + var minimumTreeSize = 0.00001; + var rootSize = Math.max(minimumTreeSize, Math.abs(maxX - minX)); + var halfRootSize = 0.5 * rootSize; + var centerX = 0.5 * (minX + maxX), + centerY = 0.5 * (minY + maxY); - // if tap count matches we have recognized it, - // else it has began recognizing... - var tapCount = this.count % options.taps; - if (tapCount === 0) { - // no failing requirements, immediately trigger the tap event - // or wait as long as the multitap interval to trigger - if (!this.hasRequireFailures()) { - return STATE_RECOGNIZED; - } else { - this._timer = setTimeoutContext(function() { - this.state = STATE_RECOGNIZED; - this.tryEmit(); - }, options.interval, this); - return STATE_BEGAN; - } - } + // construct the barnesHutTree + var barnesHutTree = { + root: { + centerOfMass: { x: 0, y: 0 }, + mass: 0, + range: { + minX: centerX - halfRootSize, maxX: centerX + halfRootSize, + minY: centerY - halfRootSize, maxY: centerY + halfRootSize + }, + size: rootSize, + calcSize: 1 / rootSize, + children: { data: null }, + maxWidth: 0, + level: 0, + childrenCount: 4 } - return STATE_FAILED; - }, - - failTimeout: function() { - this._timer = setTimeoutContext(function() { - this.state = STATE_FAILED; - }, this.options.interval, this); - return STATE_FAILED; - }, - - reset: function() { - clearTimeout(this._timer); - }, + }; + this._splitBranch(barnesHutTree.root); - emit: function() { - if (this.state == STATE_RECOGNIZED ) { - this._input.tapCount = this.count; - this.manager.emit(this.options.event, this._input); + // place the nodes one by one recursively + for (i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + this._placeInTree(barnesHutTree.root, node); } - } - }); - - /** - * Simple way to create an manager with a default set of recognizers. - * @param {HTMLElement} element - * @param {Object} [options] - * @constructor - */ - function Hammer(element, options) { - options = options || {}; - options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset); - return new Manager(element, options); - } + } - /** - * @const {string} - */ - Hammer.VERSION = '2.0.4'; + // make global + return barnesHutTree; + } + }, { + key: "_updateBranchMass", - /** - * default settings - * @namespace - */ - Hammer.defaults = { /** - * set if DOM events are being triggered. - * But this is slower and unused by simple implementations, so disabled by default. - * @type {Boolean} - * @default false + * this updates the mass of a branch. this is increased by adding a node. + * + * @param parentBranch + * @param node + * @private */ - domEvents: false, + value: function _updateBranchMass(parentBranch, node) { + var totalMass = parentBranch.mass + node.options.mass; + var totalMassInv = 1 / totalMass; - /** - * The value for the touchAction property/fallback. - * When set to `compute` it will magically set the correct value based on the added recognizers. - * @type {String} - * @default compute - */ - touchAction: TOUCH_ACTION_COMPUTE, + parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; + parentBranch.centerOfMass.x *= totalMassInv; + + parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; + parentBranch.centerOfMass.y *= totalMassInv; + + parentBranch.mass = totalMass; + var biggestSize = Math.max(Math.max(node.height, node.radius), node.width); + parentBranch.maxWidth = parentBranch.maxWidth < biggestSize ? biggestSize : parentBranch.maxWidth; + } + }, { + key: "_placeInTree", /** - * @type {Boolean} - * @default true + * determine in which branch the node will be placed. + * + * @param parentBranch + * @param node + * @param skipMassUpdate + * @private */ - enable: true, + value: function _placeInTree(parentBranch, node, skipMassUpdate) { + if (skipMassUpdate != true || skipMassUpdate === undefined) { + // update the mass of the branch. + this._updateBranchMass(parentBranch, node); + } - /** - * EXPERIMENTAL FEATURE -- can be removed/changed - * Change the parent input target element. - * If Null, then it is being set the to main element. - * @type {Null|EventTarget} - * @default null - */ - inputTarget: null, + if (parentBranch.children.NW.range.maxX > node.x) { + // in NW or SW + if (parentBranch.children.NW.range.maxY > node.y) { + // in NW + this._placeInRegion(parentBranch, node, "NW"); + } else { + // in SW + this._placeInRegion(parentBranch, node, "SW"); + } + } else { + // in NE or SE + if (parentBranch.children.NW.range.maxY > node.y) { + // in NE + this._placeInRegion(parentBranch, node, "NE"); + } else { + // in SE + this._placeInRegion(parentBranch, node, "SE"); + } + } + } + }, { + key: "_placeInRegion", /** - * force an input class - * @type {Null|Function} - * @default null + * actually place the node in a region (or branch) + * + * @param parentBranch + * @param node + * @param region + * @private */ - inputClass: null, + value: function _placeInRegion(parentBranch, node, region) { + switch (parentBranch.children[region].childrenCount) { + case 0: + // place node here + parentBranch.children[region].children.data = node; + parentBranch.children[region].childrenCount = 1; + this._updateBranchMass(parentBranch.children[region], node); + break; + case 1: + // convert into children + // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) + // we move one node a pixel and we do not put it in the tree. + if (parentBranch.children[region].children.data.x === node.x && parentBranch.children[region].children.data.y === node.y) { + node.x += Math.random(); + node.y += Math.random(); + } else { + this._splitBranch(parentBranch.children[region]); + this._placeInTree(parentBranch.children[region], node); + } + break; + case 4: + // place in branch + this._placeInTree(parentBranch.children[region], node); + break; + } + } + }, { + key: "_splitBranch", /** - * Default recognizer setup when calling `Hammer()` - * When creating a new Manager these will be skipped. - * @type {Array} + * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch + * after the split is complete. + * + * @param parentBranch + * @private */ - preset: [ - // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] - [RotateRecognizer, { enable: false }], - [PinchRecognizer, { enable: false }, ['rotate']], - [SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }], - [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], - [TapRecognizer], - [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], - [PressRecognizer] - ], + value: function _splitBranch(parentBranch) { + // if the branch is shaded with a node, replace the node in the new subset. + var containedNode = null; + if (parentBranch.childrenCount === 1) { + containedNode = parentBranch.children.data; + parentBranch.mass = 0; + parentBranch.centerOfMass.x = 0; + parentBranch.centerOfMass.y = 0; + } + parentBranch.childrenCount = 4; + parentBranch.children.data = null; + this._insertRegion(parentBranch, "NW"); + this._insertRegion(parentBranch, "NE"); + this._insertRegion(parentBranch, "SW"); + this._insertRegion(parentBranch, "SE"); + + if (containedNode != null) { + this._placeInTree(parentBranch, containedNode); + } + } + }, { + key: "_insertRegion", /** - * Some CSS properties can be used to improve the working of Hammer. - * Add them to this method and they will be set when creating a new Manager. - * @namespace + * This function subdivides the region into four new segments. + * Specifically, this inserts a single new segment. + * It fills the children section of the parentBranch + * + * @param parentBranch + * @param region + * @param parentRange + * @private */ - cssProps: { - /** - * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. - * @type {String} - * @default 'none' - */ - userSelect: 'none', - - /** - * Disable the Windows Phone grippers when pressing an element. - * @type {String} - * @default 'none' - */ - touchSelect: 'none', - - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @type {String} - * @default 'none' - */ - touchCallout: 'none', - - /** - * Specifies whether zooming is enabled. Used by IE10> - * @type {String} - * @default 'none' - */ - contentZooming: 'none', - - /** - * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. - * @type {String} - * @default 'none' - */ - userDrag: 'none', + value: function _insertRegion(parentBranch, region) { + var minX, maxX, minY, maxY; + var childSize = 0.5 * parentBranch.size; + switch (region) { + case "NW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "NE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "SW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + case "SE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + } - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in iOS. This property obeys the alpha value, if specified. - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' + parentBranch.children[region] = { + centerOfMass: { x: 0, y: 0 }, + mass: 0, + range: { minX: minX, maxX: maxX, minY: minY, maxY: maxY }, + size: 0.5 * parentBranch.size, + calcSize: 2 * parentBranch.calcSize, + children: { data: null }, + maxWidth: 0, + level: parentBranch.level + 1, + childrenCount: 0 + }; } - }; + }, { + key: "_debug", - var STOP = 1; - var FORCED_STOP = 2; + //--------------------------- DEBUGGING BELOW ---------------------------// - /** - * Manager - * @param {HTMLElement} element - * @param {Object} [options] - * @constructor - */ - function Manager(element, options) { - options = options || {}; + /** + * This function is for debugging purposed, it draws the tree. + * + * @param ctx + * @param color + * @private + */ + value: function _debug(ctx, color) { + if (this.barnesHutTree !== undefined) { - this.options = merge(options, Hammer.defaults); - this.options.inputTarget = this.options.inputTarget || element; + ctx.lineWidth = 1; - this.handlers = {}; - this.session = {}; - this.recognizers = []; + this._drawBranch(this.barnesHutTree.root, ctx, color); + } + } + }, { + key: "_drawBranch", - this.element = element; - this.input = createInputInstance(this); - this.touchAction = new TouchAction(this, this.options.touchAction); + /** + * This function is for debugging purposes. It draws the branches recursively. + * + * @param branch + * @param ctx + * @param color + * @private + */ + value: function _drawBranch(branch, ctx, color) { + if (color === undefined) { + color = "#FF0000"; + } - toggleCssProps(this, true); + if (branch.childrenCount === 4) { + this._drawBranch(branch.children.NW, ctx); + this._drawBranch(branch.children.NE, ctx); + this._drawBranch(branch.children.SE, ctx); + this._drawBranch(branch.children.SW, ctx); + } + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(branch.range.minX, branch.range.minY); + ctx.lineTo(branch.range.maxX, branch.range.minY); + ctx.stroke(); - each(options.recognizers, function(item) { - var recognizer = this.add(new (item[0])(item[1])); - item[2] && recognizer.recognizeWith(item[2]); - item[3] && recognizer.requireFailure(item[3]); - }, this); - } + ctx.beginPath(); + ctx.moveTo(branch.range.maxX, branch.range.minY); + ctx.lineTo(branch.range.maxX, branch.range.maxY); + ctx.stroke(); - Manager.prototype = { - /** - * set options - * @param {Object} options - * @returns {Manager} - */ - set: function(options) { - extend(this.options, options); + ctx.beginPath(); + ctx.moveTo(branch.range.maxX, branch.range.maxY); + ctx.lineTo(branch.range.minX, branch.range.maxY); + ctx.stroke(); - // Options that need a little more setup - if (options.touchAction) { - this.touchAction.update(); - } - if (options.inputTarget) { - // Clean up existing event listeners and reinitialize - this.input.destroy(); - this.input.target = options.inputTarget; - this.input.init(); - } - return this; - }, + ctx.beginPath(); + ctx.moveTo(branch.range.minX, branch.range.maxY); + ctx.lineTo(branch.range.minX, branch.range.minY); + ctx.stroke(); - /** - * stop recognizing for this session. - * This session will be discarded, when a new [input]start event is fired. - * When forced, the recognizer cycle is stopped immediately. - * @param {Boolean} [force] - */ - stop: function(force) { - this.session.stopped = force ? FORCED_STOP : STOP; - }, + /* + if (branch.mass > 0) { + ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); + ctx.stroke(); + } + */ + } + }]); - /** - * run the recognizers! - * called by the inputHandler function on every movement of the pointers (touches) - * it walks through all the recognizers and tries to detect the gesture that is being made - * @param {Object} inputData - */ - recognize: function(inputData) { - var session = this.session; - if (session.stopped) { - return; - } + return BarnesHutSolver; + })(); - // run the touch-action polyfill - this.touchAction.preventDefaults(inputData); + exports["default"] = BarnesHutSolver; + module.exports = exports["default"]; - var recognizer; - var recognizers = this.recognizers; +/***/ }, +/* 77 */ +/***/ function(module, exports, __webpack_require__) { - // this holds the recognizer that is being recognized. - // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED - // if no recognizer is detecting a thing, it is set to `null` - var curRecognizer = session.curRecognizer; + "use strict"; - // reset when the last recognizer is recognized - // or when we're in a new session - if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) { - curRecognizer = session.curRecognizer = null; - } + Object.defineProperty(exports, "__esModule", { + value: true + }); - var i = 0; - while (i < recognizers.length) { - recognizer = recognizers[i]; + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - // find out if we are allowed try to recognize the input for this one. - // 1. allow if the session is NOT forced stopped (see the .stop() method) - // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one - // that is being recognized. - // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. - // this can be setup with the `recognizeWith()` method on the recognizer. - if (session.stopped !== FORCED_STOP && ( // 1 - !curRecognizer || recognizer == curRecognizer || // 2 - recognizer.canRecognizeWith(curRecognizer))) { // 3 - recognizer.recognize(inputData); - } else { - recognizer.reset(); - } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the - // current active recognizer. but only if we don't already have an active recognizer - if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { - curRecognizer = session.curRecognizer = recognizer; - } - i++; - } - }, + var RepulsionSolver = (function () { + function RepulsionSolver(body, physicsBody, options) { + _classCallCheck(this, RepulsionSolver); - /** - * get a recognizer by its event name. - * @param {Recognizer|String} recognizer - * @returns {Recognizer|Null} - */ - get: function(recognizer) { - if (recognizer instanceof Recognizer) { - return recognizer; - } + this.body = body; + this.physicsBody = physicsBody; + this.setOptions(options); + } - var recognizers = this.recognizers; - for (var i = 0; i < recognizers.length; i++) { - if (recognizers[i].options.event == recognizer) { - return recognizers[i]; - } - } - return null; - }, + _createClass(RepulsionSolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; + } + }, { + key: "solve", /** - * add a recognizer to the manager - * existing recognizers with the same event name will be removed - * @param {Recognizer} recognizer - * @returns {Recognizer|Manager} + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. + * + * @private */ - add: function(recognizer) { - if (invokeArrayArg(recognizer, 'add', this)) { - return this; - } - - // remove existing - var existing = this.get(recognizer.options.event); - if (existing) { - this.remove(existing); - } + value: function solve() { + var dx, dy, distance, fx, fy, repulsingForce, node1, node2; - this.recognizers.push(recognizer); - recognizer.manager = this; + var nodes = this.body.nodes; + var nodeIndices = this.physicsBody.physicsNodeIndices; + var forces = this.physicsBody.forces; - this.touchAction.update(); - return recognizer; - }, + // repulsing forces between nodes + var nodeDistance = this.options.nodeDistance; - /** - * remove a recognizer by name or instance - * @param {Recognizer|String} recognizer - * @returns {Manager} - */ - remove: function(recognizer) { - if (invokeArrayArg(recognizer, 'remove', this)) { - return this; - } + // approximation constants + var a = -2 / 3 / nodeDistance; + var b = 4 / 3; - var recognizers = this.recognizers; - recognizer = this.get(recognizer); - recognizers.splice(inArray(recognizers, recognizer), 1); + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j + for (var i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (var j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; - this.touchAction.update(); - return this; - }, + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); - /** - * bind event - * @param {String} events - * @param {Function} handler - * @returns {EventEmitter} this - */ - on: function(events, handler) { - var handlers = this.handlers; - each(splitStr(events), function(event) { - handlers[event] = handlers[event] || []; - handlers[event].push(handler); - }); - return this; - }, + // same condition as BarnesHutSolver, making sure nodes are never 100% overlapping. + if (distance === 0) { + distance = 0.1 * Math.random(); + dx = distance; + } - /** - * unbind event, leave emit blank to remove all handlers - * @param {String} events - * @param {Function} [handler] - * @returns {EventEmitter} this - */ - off: function(events, handler) { - var handlers = this.handlers; - each(splitStr(events), function(event) { - if (!handler) { - delete handlers[event]; + if (distance < 2 * nodeDistance) { + if (distance < 0.5 * nodeDistance) { + repulsingForce = 1; } else { - handlers[event].splice(inArray(handlers[event], handler), 1); + repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / nodeDistance - 1) * steepness)) } - }); - return this; - }, + repulsingForce = repulsingForce / distance; - /** - * emit event to the listeners - * @param {String} event - * @param {Object} data - */ - emit: function(event, data) { - // we also want to trigger dom events - if (this.options.domEvents) { - triggerDomEvent(event, data); - } + fx = dx * repulsingForce; + fy = dy * repulsingForce; - // no handlers, so skip it all - var handlers = this.handlers[event] && this.handlers[event].slice(); - if (!handlers || !handlers.length) { - return; + forces[node1.id].x -= fx; + forces[node1.id].y -= fy; + forces[node2.id].x += fx; + forces[node2.id].y += fy; + } } + } + } + }]); - data.type = event; - data.preventDefault = function() { - data.srcEvent.preventDefault(); - }; + return RepulsionSolver; + })(); - var i = 0; - while (i < handlers.length) { - handlers[i](data); - i++; - } - }, + exports["default"] = RepulsionSolver; + module.exports = exports["default"]; - /** - * destroy the manager and unbinds all events - * it doesn't unbind dom events, that is the user own responsibility - */ - destroy: function() { - this.element && toggleCssProps(this, false); +/***/ }, +/* 78 */ +/***/ function(module, exports, __webpack_require__) { - this.handlers = {}; - this.session = {}; - this.input.destroy(); - this.element = null; - } - }; + "use strict"; - /** - * add/remove the css properties as defined in manager.options.cssProps - * @param {Manager} manager - * @param {Boolean} add - */ - function toggleCssProps(manager, add) { - var element = manager.element; - each(manager.options.cssProps, function(value, name) { - element.style[prefixed(element.style, name)] = add ? value : ''; - }); - } + Object.defineProperty(exports, "__esModule", { + value: true + }); - /** - * trigger dom event - * @param {String} event - * @param {Object} data - */ - function triggerDomEvent(event, data) { - var gestureEvent = document.createEvent('Event'); - gestureEvent.initEvent(event, true, true); - gestureEvent.gesture = data; - data.target.dispatchEvent(gestureEvent); - } + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - extend(Hammer, { - INPUT_START: INPUT_START, - INPUT_MOVE: INPUT_MOVE, - INPUT_END: INPUT_END, - INPUT_CANCEL: INPUT_CANCEL, + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - STATE_POSSIBLE: STATE_POSSIBLE, - STATE_BEGAN: STATE_BEGAN, - STATE_CHANGED: STATE_CHANGED, - STATE_ENDED: STATE_ENDED, - STATE_RECOGNIZED: STATE_RECOGNIZED, - STATE_CANCELLED: STATE_CANCELLED, - STATE_FAILED: STATE_FAILED, + var HierarchicalRepulsionSolver = (function () { + function HierarchicalRepulsionSolver(body, physicsBody, options) { + _classCallCheck(this, HierarchicalRepulsionSolver); - DIRECTION_NONE: DIRECTION_NONE, - DIRECTION_LEFT: DIRECTION_LEFT, - DIRECTION_RIGHT: DIRECTION_RIGHT, - DIRECTION_UP: DIRECTION_UP, - DIRECTION_DOWN: DIRECTION_DOWN, - DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL, - DIRECTION_VERTICAL: DIRECTION_VERTICAL, - DIRECTION_ALL: DIRECTION_ALL, + this.body = body; + this.physicsBody = physicsBody; + this.setOptions(options); + } - Manager: Manager, - Input: Input, - TouchAction: TouchAction, + _createClass(HierarchicalRepulsionSolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; + } + }, { + key: "solve", - TouchInput: TouchInput, - MouseInput: MouseInput, - PointerEventInput: PointerEventInput, - TouchMouseInput: TouchMouseInput, - SingleTouchInput: SingleTouchInput, + /** + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. + * + * @private + */ + value: function solve() { + var dx, dy, distance, fx, fy, repulsingForce, node1, node2, i, j; - Recognizer: Recognizer, - AttrRecognizer: AttrRecognizer, - Tap: TapRecognizer, - Pan: PanRecognizer, - Swipe: SwipeRecognizer, - Pinch: PinchRecognizer, - Rotate: RotateRecognizer, - Press: PressRecognizer, + var nodes = this.body.nodes; + var nodeIndices = this.physicsBody.physicsNodeIndices; + var forces = this.physicsBody.forces; - on: addEventListeners, - off: removeEventListeners, - each: each, - merge: merge, - extend: extend, - inherit: inherit, - bindFn: bindFn, - prefixed: prefixed - }); + // repulsing forces between nodes + var nodeDistance = this.options.nodeDistance; - if ("function" == TYPE_FUNCTION && __webpack_require__(105)) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof module != 'undefined' && module.exports) { - module.exports = Hammer; - } else { - window[exportName] = Hammer; - } + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; - })(window, document, 'Hammer'); + // nodes only affect nodes on their level + if (node1.level === node2.level) { + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + var steepness = 0.05; + if (distance < nodeDistance) { + repulsingForce = -Math.pow(steepness * distance, 2) + Math.pow(steepness * nodeDistance, 2); + } else { + repulsingForce = 0; + } + // normalize force with + if (distance === 0) { + distance = 0.01; + } else { + repulsingForce = repulsingForce / distance; + } + fx = dx * repulsingForce; + fy = dy * repulsingForce; + + forces[node1.id].x -= fx; + forces[node1.id].y -= fy; + forces[node2.id].x += fx; + forces[node2.id].y += fy; + } + } + } + } + }]); + + return HierarchicalRepulsionSolver; + })(); + exports["default"] = HierarchicalRepulsionSolver; + module.exports = exports["default"]; /***/ }, -/* 83 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict'; + "use strict"; - (function (factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - window.propagating = factory(); + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var SpringSolver = (function () { + function SpringSolver(body, physicsBody, options) { + _classCallCheck(this, SpringSolver); + + this.body = body; + this.physicsBody = physicsBody; + this.setOptions(options); } - }(function () { - var _firstTarget = null; // singleton, will contain the target element where the touch event started - var _processing = false; // singleton, true when a touch event is being handled - /** - * Extend an Hammer.js instance with event propagation. - * - * Features: - * - Events emitted by hammer will propagate in order from child to parent - * elements. - * - Events are extended with a function `event.stopPropagation()` to stop - * propagation to parent elements. - * - An option `preventDefault` to stop all default browser behavior. - * - * Usage: - * var hammer = propagatingHammer(new Hammer(element)); - * var hammer = propagatingHammer(new Hammer(element), {preventDefault: true}); - * - * @param {Hammer.Manager} hammer An hammer instance. - * @param {Object} [options] Available options: - * - `preventDefault: true | 'mouse' | 'touch' | 'pen'`. - * Enforce preventing the default browser behavior. - * Cannot be set to `false`. - * @return {Hammer.Manager} Returns the same hammer instance with extended - * functionality - */ - return function propagating(hammer, options) { - if (options && options.preventDefault === false) { - throw new Error('Only supports preventDefault == true'); + _createClass(SpringSolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; } - var _options = options || { - preventDefault: false - }; + }, { + key: "solve", - if (hammer.Manager) { - // This looks like the Hammer constructor. - // Overload the constructors with our own. - var Hammer = hammer; + /** + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private + */ + value: function solve() { + var edgeLength, edge; + var edgeIndices = this.physicsBody.physicsEdgeIndices; + var edges = this.body.edges; - var PropagatingHammer = function(element, options) { - return propagating(new Hammer(element, options), _options); - }; - Hammer.extend(PropagatingHammer, Hammer); - PropagatingHammer.Manager = function (element, options) { - return propagating(new Hammer.Manager(element, options), _options); - }; + // forces caused by the edges, modelled as springs + for (var i = 0; i < edgeIndices.length; i++) { + edge = edges[edgeIndices[i]]; + if (edge.connected === true && edge.toId !== edge.fromId) { + // only calculate forces if nodes are in the same sector + if (this.body.nodes[edge.toId] !== undefined && this.body.nodes[edge.fromId] !== undefined) { + if (edge.edgeType.via !== undefined) { + edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length; + var node1 = edge.to; + var node2 = edge.edgeType.via; + var node3 = edge.from; - return PropagatingHammer; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } else { + // the * 1.5 is here so the edge looks as large as a smooth edge. It does not initially because the smooth edges use + // the support nodes which exert a repulsive force on the to and from nodes, making the edge appear larger. + edgeLength = edge.options.length === undefined ? this.options.springLength * 1.5 : edge.options.length; + this._calculateSpringForce(edge.from, edge.to, edgeLength); + } + } + } + } } + }, { + key: "_calculateSpringForce", - // attach to DOM element - var element = hammer.element; - element.hammer = hammer; + /** + * This is the code actually performing the calculation for the function above. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private + */ + value: function _calculateSpringForce(node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; - // move the original functions that we will wrap - hammer._on = hammer.on; - hammer._off = hammer.off; - hammer._emit = hammer.emit; - hammer._destroy = hammer.destroy; + dx = node1.x - node2.x; + dy = node1.y - node2.y; + distance = Math.sqrt(dx * dx + dy * dy); + distance = distance === 0 ? 0.01 : distance; - /** @type {Object.>} */ - hammer._handlers = {}; + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.options.springConstant * (edgeLength - distance) / distance; - // register an event to catch the start of a gesture and store the - // target in a singleton - hammer._on('hammer.input', function (event) { - if (_options.preventDefault === true || (_options.preventDefault === event.pointerType)) { - event.preventDefault(); - } - if (event.isFirst) { - _firstTarget = event.target; - _processing = true; - } - if (event.isFinal) { - _processing = false; + fx = dx * springForce; + fy = dy * springForce; + + // handle the case where one node is not part of the physcis + if (this.physicsBody.forces[node1.id] !== undefined) { + this.physicsBody.forces[node1.id].x += fx; + this.physicsBody.forces[node1.id].y += fy; } - }); - /** - * Register a handler for one or multiple events - * @param {String} events A space separated string with events - * @param {function} handler A callback function, called as handler(event) - * @returns {Hammer.Manager} Returns the hammer instance - */ - hammer.on = function (events, handler) { - // register the handler - split(events).forEach(function (event) { - var _handlers = hammer._handlers[event]; - if (!_handlers) { - hammer._handlers[event] = _handlers = []; + if (this.physicsBody.forces[node2.id] !== undefined) { + this.physicsBody.forces[node2.id].x -= fx; + this.physicsBody.forces[node2.id].y -= fy; + } + } + }]); - // register the static, propagated handler - hammer._on(event, propagatedHandler); - } - _handlers.push(handler); - }); + return SpringSolver; + })(); - return hammer; - }; + exports["default"] = SpringSolver; + module.exports = exports["default"]; - /** - * Unregister a handler for one or multiple events - * @param {String} events A space separated string with events - * @param {function} [handler] Optional. The registered handler. If not - * provided, all handlers for given events - * are removed. - * @returns {Hammer.Manager} Returns the hammer instance - */ - hammer.off = function (events, handler) { - // unregister the handler - split(events).forEach(function (event) { - var _handlers = hammer._handlers[event]; - if (_handlers) { - _handlers = handler ? _handlers.filter(function (h) { - return h !== handler; - }) : []; +/***/ }, +/* 80 */ +/***/ function(module, exports, __webpack_require__) { - if (_handlers.length > 0) { - hammer._handlers[event] = _handlers; - } - else { - // remove static, propagated handler - hammer._off(event, propagatedHandler); - delete hammer._handlers[event]; - } - } - }); + "use strict"; - return hammer; - }; + Object.defineProperty(exports, "__esModule", { + value: true + }); - /** - * Emit to the event listeners - * @param {string} eventType - * @param {Event} event - */ - hammer.emit = function(eventType, event) { - if (!_processing) { - _firstTarget = event.target; - } - hammer._emit(eventType, event); - }; + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - hammer.destroy = function () { - // Detach from DOM element - var element = hammer.element; - delete element.hammer; + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - // clear all handlers - hammer._handlers = {}; + var HierarchicalSpringSolver = (function () { + function HierarchicalSpringSolver(body, physicsBody, options) { + _classCallCheck(this, HierarchicalSpringSolver); - // call original hammer destroy - hammer._destroy(); - }; + this.body = body; + this.physicsBody = physicsBody; + this.setOptions(options); + } - // split a string with space separated words - function split(events) { - return events.match(/[^ ]+/g); + _createClass(HierarchicalSpringSolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; } + }, { + key: "solve", /** - * A static event handler, applying event propagation. - * @param {Object} event + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private */ - function propagatedHandler(event) { - // let only a single hammer instance handle this event - if (event.type !== 'hammer.input') { - // it is possible that the same srcEvent is used with multiple hammer events, - // we keep track on which events are handled in an object _handled - if (!event.srcEvent._handled) { - event.srcEvent._handled = {}; - } + value: function solve() { + var edgeLength, edge; + var dx, dy, fx, fy, springForce, distance; + var edges = this.body.edges; + var factor = 0.5; + + var edgeIndices = this.physicsBody.physicsEdgeIndices; + var nodeIndices = this.physicsBody.physicsNodeIndices; + var forces = this.physicsBody.forces; + + // initialize the spring force counters + for (var i = 0; i < nodeIndices.length; i++) { + var nodeId = nodeIndices[i]; + forces[nodeId].springFx = 0; + forces[nodeId].springFy = 0; + } + + // forces caused by the edges, modelled as springs + for (var i = 0; i < edgeIndices.length; i++) { + edge = edges[edgeIndices[i]]; + if (edge.connected === true) { + edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length; + + dx = edge.from.x - edge.to.x; + dy = edge.from.y - edge.to.y; + distance = Math.sqrt(dx * dx + dy * dy); + distance = distance === 0 ? 0.01 : distance; - if (event.srcEvent._handled[event.type]) { - return; - } - else { - event.srcEvent._handled[event.type] = true; + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.options.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + if (edge.to.level != edge.from.level) { + forces[edge.toId].springFx -= fx; + forces[edge.toId].springFy -= fy; + forces[edge.fromId].springFx += fx; + forces[edge.fromId].springFy += fy; + } else { + forces[edge.toId].x -= factor * fx; + forces[edge.toId].y -= factor * fy; + forces[edge.fromId].x += factor * fx; + forces[edge.fromId].y += factor * fy; + } } } - // attach a stopPropagation function to the event - var stopped = false; - event.stopPropagation = function () { - stopped = true; - }; + // normalize spring forces + var springForce = 1; + var springFx, springFy; + for (var i = 0; i < nodeIndices.length; i++) { + var nodeId = nodeIndices[i]; + springFx = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFx)); + springFy = Math.min(springForce, Math.max(-springForce, forces[nodeId].springFy)); - // attach firstTarget property to the event - event.firstTarget = _firstTarget; + forces[nodeId].x += springFx; + forces[nodeId].y += springFy; + } - // propagate over all elements (until stopped) - var elem = _firstTarget; - while (elem && !stopped) { - var _handlers = elem.hammer && elem.hammer._handlers[event.type]; - if (_handlers) { - for (var i = 0; i < _handlers.length && !stopped; i++) { - _handlers[i](event); - } - } + // retain energy balance + var totalFx = 0; + var totalFy = 0; + for (var i = 0; i < nodeIndices.length; i++) { + var nodeId = nodeIndices[i]; + totalFx += forces[nodeId].x; + totalFy += forces[nodeId].y; + } + var correctionFx = totalFx / nodeIndices.length; + var correctionFy = totalFy / nodeIndices.length; - elem = elem.parentNode; + for (var i = 0; i < nodeIndices.length; i++) { + var nodeId = nodeIndices[i]; + forces[nodeId].x -= correctionFx; + forces[nodeId].y -= correctionFy; } } + }]); - return hammer; - }; - })); + return HierarchicalSpringSolver; + })(); + exports["default"] = HierarchicalSpringSolver; + module.exports = exports["default"]; /***/ }, -/* 84 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { - 'use strict'; + "use strict"; - Object.defineProperty(exports, '__esModule', { + Object.defineProperty(exports, "__esModule", { value: true }); - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var _sharedLabel = __webpack_require__(72); - - var _sharedLabel2 = _interopRequireDefault(_sharedLabel); - - var _edgesBezierEdgeDynamic = __webpack_require__(101); - - var _edgesBezierEdgeDynamic2 = _interopRequireDefault(_edgesBezierEdgeDynamic); - - var _edgesBezierEdgeStatic = __webpack_require__(102); - - var _edgesBezierEdgeStatic2 = _interopRequireDefault(_edgesBezierEdgeStatic); - - var _edgesStraightEdge = __webpack_require__(103); - - var _edgesStraightEdge2 = _interopRequireDefault(_edgesStraightEdge); + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - var util = __webpack_require__(1); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - /** - * @class Edge - * - * A edge connects two nodes - * @param {Object} properties Object with options. Must contain - * At least options from and to. - * Available options: from (number), - * to (number), label (string, color (string), - * width (number), style (string), - * length (number), title (string) - * @param {Network} network A Network object, used to find and edge to - * nodes. - * @param {Object} constants An object with default values for - * example for the color - */ + var CentralGravitySolver = (function () { + function CentralGravitySolver(body, physicsBody, options) { + _classCallCheck(this, CentralGravitySolver); - var Edge = (function () { - function Edge(options, body, globalOptions) { - _classCallCheck(this, Edge); + this.body = body; + this.physicsBody = physicsBody; + this.setOptions(options); + } - if (body === undefined) { - throw 'No body provided'; + _createClass(CentralGravitySolver, [{ + key: "setOptions", + value: function setOptions(options) { + this.options = options; } - this.options = util.bridgeObject(globalOptions); - this.body = body; + }, { + key: "solve", + value: function solve() { + var dx, dy, distance, node, i; + var nodes = this.body.nodes; + var nodeIndices = this.physicsBody.physicsNodeIndices; + var forces = this.physicsBody.forces; - // initialize variables - this.id = undefined; - this.fromId = undefined; - this.toId = undefined; - this.selected = false; - this.hover = false; - this.labelDirty = true; - this.colorDirty = true; + var gravity = this.options.centralGravity; + var gravityForce = 0; - this.baseWidth = this.options.width; - this.baseFontSize = this.options.font.size; + for (i = 0; i < nodeIndices.length; i++) { + var nodeId = nodeIndices[i]; + node = nodes[nodeId]; + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - this.from = undefined; // a node - this.to = undefined; // a node + gravityForce = distance === 0 ? 0 : gravity / distance; + forces[nodeId].x = dx * gravityForce; + forces[nodeId].y = dy * gravityForce; + } + } + }]); - this.edgeType = undefined; + return CentralGravitySolver; + })(); - this.connected = false; + exports["default"] = CentralGravitySolver; + module.exports = exports["default"]; - this.labelModule = new _sharedLabel2['default'](this.body, this.options); +/***/ }, +/* 82 */ +/***/ function(module, exports, __webpack_require__) { - this.setOptions(options); - } + 'use strict'; - _createClass(Edge, [{ - key: 'setOptions', + Object.defineProperty(exports, '__esModule', { + value: true + }); - /** - * Set or overwrite options for the edge - * @param {Object} options an object with options - * @param doNotEmit - */ - value: function setOptions(options) { - if (!options) { - return; - } - this.colorDirty = true; + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x, + property = _x2, + receiver = _x3; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; - Edge.parseOptions(this.options, options, true); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - if (options.id !== undefined) { - this.id = options.id; - } - if (options.from !== undefined) { - this.fromId = options.from; - } - if (options.to !== undefined) { - this.toId = options.to; - } - if (options.title !== undefined) { - this.title = options.title; - } - if (options.value !== undefined) { - options.value = parseInt(options.value); - } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - // A node is connected when it has a from and to node that both exist in the network.body.nodes. - this.connect(); + function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } - // update label Module - this.updateLabelModule(); + var _Node2 = __webpack_require__(73); - var dataChanged = this.updateEdgeType(); + var _Node3 = _interopRequireDefault(_Node2); - // if anything has been updates, reset the selection width and the hover width - this._setInteractionWidths(); + /** + * + */ - return dataChanged; - } - }, { - key: 'updateLabelModule', + var Cluster = (function (_Node) { + function Cluster(options, body, imagelist, grouplist, globalOptions) { + _classCallCheck(this, Cluster); - /** - * update the options in the label module - */ - value: function updateLabelModule() { - this.labelModule.setOptions(this.options, true); - if (this.labelModule.baseSize !== undefined) { - this.baseFontSize = this.labelModule.baseSize; - } - } - }, { - key: 'updateEdgeType', + _get(Object.getPrototypeOf(Cluster.prototype), 'constructor', this).call(this, options, body, imagelist, grouplist, globalOptions); - /** - * update the edge type, set the options - * @returns {boolean} - */ - value: function updateEdgeType() { - var dataChanged = false; - var changeInType = true; - if (this.edgeType !== undefined) { - if (this.edgeType instanceof _edgesBezierEdgeDynamic2['default'] && this.options.smooth.enabled === true && this.options.smooth.dynamic === true) { - changeInType = false; - } - if (this.edgeType instanceof _edgesBezierEdgeStatic2['default'] && this.options.smooth.enabled === true && this.options.smooth.dynamic === false) { - changeInType = false; - } - if (this.edgeType instanceof _edgesStraightEdge2['default'] && this.options.smooth.enabled === false) { - changeInType = false; - } + this.isCluster = true; + this.containedNodes = {}; + this.containedEdges = {}; + } - if (changeInType === true) { - dataChanged = this.edgeType.cleanup(); - } - } + _inherits(Cluster, _Node); - if (changeInType === true) { - if (this.options.smooth.enabled === true) { - if (this.options.smooth.dynamic === true) { - dataChanged = true; - this.edgeType = new _edgesBezierEdgeDynamic2['default'](this.options, this.body, this.labelModule); - } else { - this.edgeType = new _edgesBezierEdgeStatic2['default'](this.options, this.body, this.labelModule); - } - } else { - this.edgeType = new _edgesStraightEdge2['default'](this.options, this.body, this.labelModule); - } - } else { - // if nothing changes, we just set the options. - this.edgeType.setOptions(this.options); - } + return Cluster; + })(_Node3['default']); - return dataChanged; - } - }, { - key: 'togglePhysics', + exports['default'] = Cluster; + module.exports = exports['default']; - /** - * Enable or disable the physics. - * @param status - */ - value: function togglePhysics(status) { - this.options.physics = status; - this.edgeType.togglePhysics(status); - } - }, { - key: 'connect', +/***/ }, +/* 83 */ +/***/ function(module, exports, __webpack_require__) { - /** - * Connect an edge to its nodes - */ - value: function connect() { - this.disconnect(); + 'use strict'; - this.from = this.body.nodes[this.fromId] || undefined; - this.to = this.body.nodes[this.toId] || undefined; - this.connected = this.from !== undefined && this.to !== undefined; + Object.defineProperty(exports, '__esModule', { + value: true + }); - if (this.connected === true) { - this.from.attachEdge(this); - this.to.attachEdge(this); - } else { - if (this.from) { - this.from.detachEdge(this); - } - if (this.to) { - this.to.detachEdge(this); - } - } - } - }, { - key: 'disconnect', + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - /** - * Disconnect an edge from its nodes - */ - value: function disconnect() { - if (this.from) { - this.from.detachEdge(this); - this.from = undefined; - } - if (this.to) { - this.to.detachEdge(this); - this.to = undefined; - } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - this.connected = false; - } - }, { - key: 'getTitle', + var util = __webpack_require__(1); + var Hammer = __webpack_require__(41); + var hammerUtil = __webpack_require__(48); + var keycharm = __webpack_require__(85); - /** - * get the title of this edge. - * @return {string} title The title of the edge, or undefined when no title - * has been set. - */ - value: function getTitle() { - return this.title; - } - }, { - key: 'isSelected', + var NavigationHandler = (function () { + function NavigationHandler(body, canvas) { + var _this = this; - /** - * check if this node is selecte - * @return {boolean} selected True if node is selected, else false - */ - value: function isSelected() { - return this.selected; - } - }, { - key: 'getValue', + _classCallCheck(this, NavigationHandler); - /** - * Retrieve the value of the edge. Can be undefined - * @return {Number} value - */ - value: function getValue() { - return this.options.value; - } - }, { - key: 'setValueRange', + this.body = body; + this.canvas = canvas; - /** - * Adjust the value range of the edge. The edge will adjust it's width - * based on its value. - * @param {Number} min - * @param {Number} max - * @param total - */ - value: function setValueRange(min, max, total) { - if (this.options.value !== undefined) { - var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value); - var widthDiff = this.options.scaling.max - this.options.scaling.min; - if (this.options.scaling.label.enabled === true) { - var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min; - this.options.font.size = this.options.scaling.label.min + scale * fontDiff; - } - this.options.width = this.options.scaling.min + scale * widthDiff; - } else { - this.options.width = this.baseWidth; - this.options.font.size = this.baseFontSize; - } + this.iconsCreated = false; + this.navigationHammers = []; + this.boundFunctions = {}; + this.touchTime = 0; + this.activated = false; - this._setInteractionWidths(); - } - }, { - key: '_setInteractionWidths', - value: function _setInteractionWidths() { - if (typeof this.options.hoverWidth === 'function') { - this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width); - } else { - this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width; + this.body.emitter.on('release', function () { + _this._stopMovement(); + }); + this.body.emitter.on('activate', function () { + _this.activated = true;_this.configureKeyboardBindings(); + }); + this.body.emitter.on('deactivate', function () { + _this.activated = false;_this.configureKeyboardBindings(); + }); + this.body.emitter.on('destroy', function () { + if (_this.keycharm !== undefined) { + _this.keycharm.destroy(); } + }); - if (typeof this.options.selectionWidth === 'function') { - this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width); - } else { - this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width; - } - } - }, { - key: 'draw', + this.options = {}; + } - /** - * Redraw a edge - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - value: function draw(ctx) { - var via = this.edgeType.drawLine(ctx, this.selected, this.hover); - this.drawArrows(ctx, via); - this.drawLabel(ctx, via); - } - }, { - key: 'drawArrows', - value: function drawArrows(ctx, viaNode) { - if (this.options.arrows.from.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'from', viaNode, this.selected, this.hover); - } - if (this.options.arrows.middle.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'middle', viaNode, this.selected, this.hover); - } - if (this.options.arrows.to.enabled === true) { - this.edgeType.drawArrowHead(ctx, 'to', viaNode, this.selected, this.hover); + _createClass(NavigationHandler, [{ + key: 'setOptions', + value: function setOptions(options) { + if (options !== undefined) { + this.options = options; + this.create(); } } }, { - key: 'drawLabel', - value: function drawLabel(ctx, viaNode) { - if (this.options.label !== undefined) { - // set style - var node1 = this.from; - var node2 = this.to; - var selected = this.from.selected || this.to.selected || this.selected; - if (node1.id != node2.id) { - var point = this.edgeType.getPoint(0.5, viaNode); - ctx.save(); - - // if the label has to be rotated: - if (this.options.font.align !== 'horizontal') { - this.labelModule.calculateLabelSize(ctx, selected, point.x, point.y); - ctx.translate(point.x, this.labelModule.size.yLine); - this._rotateForLabelAlignment(ctx); - } - - // draw the label - this.labelModule.draw(ctx, point.x, point.y, selected); - ctx.restore(); - } else { - var x, y; - var radius = this.options.selfReferenceSize; - if (node1.shape.width > node1.shape.height) { - x = node1.x + node1.shape.width * 0.5; - y = node1.y - radius; - } else { - x = node1.x + radius; - y = node1.y - node1.shape.height * 0.5; - } - point = this._pointOnCircle(x, y, radius, 0.125); - this.labelModule.draw(ctx, point.x, point.y, selected); + key: 'create', + value: function create() { + if (this.options.navigationButtons === true) { + if (this.iconsCreated === false) { + this.loadNavigationElements(); + } + } else if (this.iconsCreated === true) { + this.cleanNavigation(); + } + + this.configureKeyboardBindings(); + } + }, { + key: 'cleanNavigation', + value: function cleanNavigation() { + // clean hammer bindings + if (this.navigationHammers.length != 0) { + for (var i = 0; i < this.navigationHammers.length; i++) { + this.navigationHammers[i].destroy(); } + this.navigationHammers = []; + } + + this._navigationReleaseOverload = function () {}; + + // clean up previous navigation items + if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { + this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); } + + this.iconsCreated = false; } }, { - key: 'isOverlappingWith', + key: 'loadNavigationElements', /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top - * @return {boolean} True if location is located on the edge + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. + * + * @private */ - value: function isOverlappingWith(obj) { - if (this.connected) { - var distMax = 10; - var xFrom = this.from.x; - var yFrom = this.from.y; - var xTo = this.to.x; - var yTo = this.to.y; - var xObj = obj.left; - var yObj = obj.top; + value: function loadNavigationElements() { + this.cleanNavigation(); - var dist = this.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); + this.navigationDOM = {}; + var navigationDivs = ['up', 'down', 'left', 'right', 'zoomIn', 'zoomOut', 'zoomExtends']; + var navigationDivActions = ['_moveUp', '_moveDown', '_moveLeft', '_moveRight', '_zoomIn', '_zoomOut', '_fit']; - return dist < distMax; - } else { - return false; + this.navigationDOM['wrapper'] = document.createElement('div'); + this.navigationDOM['wrapper'].className = 'vis-navigation'; + this.canvas.frame.appendChild(this.navigationDOM['wrapper']); + + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDOM[navigationDivs[i]] = document.createElement('div'); + this.navigationDOM[navigationDivs[i]].className = 'vis-button vis-' + navigationDivs[i]; + this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); + + var hammer = new Hammer(this.navigationDOM[navigationDivs[i]]); + if (navigationDivActions[i] === '_fit') { + hammerUtil.onTouch(hammer, this._fit.bind(this)); + } else { + hammerUtil.onTouch(hammer, this.bindToRedraw.bind(this, navigationDivActions[i])); + } + + this.navigationHammers.push(hammer); } + + this.iconsCreated = true; } }, { - key: '_rotateForLabelAlignment', + key: 'bindToRedraw', + value: function bindToRedraw(action) { + if (this.boundFunctions[action] === undefined) { + this.boundFunctions[action] = this[action].bind(this); + this.body.emitter.on('initRedraw', this.boundFunctions[action]); + this.body.emitter.emit('_startRendering'); + } + } + }, { + key: 'unbindFromRedraw', + value: function unbindFromRedraw(action) { + if (this.boundFunctions[action] !== undefined) { + this.body.emitter.off('initRedraw', this.boundFunctions[action]); + this.body.emitter.emit('_stopRendering'); + delete this.boundFunctions[action]; + } + } + }, { + key: '_fit', /** - * Rotates the canvas so the text is most readable - * @param {CanvasRenderingContext2D} ctx + * this stops all movement induced by the navigation buttons + * * @private */ - value: function _rotateForLabelAlignment(ctx) { - var dy = this.from.y - this.to.y; - var dx = this.from.x - this.to.x; - var angleInDegrees = Math.atan2(dy, dx); - - // rotate so label it is readable - if (angleInDegrees < -1 && dx < 0 || angleInDegrees > 0 && dx < 0) { - angleInDegrees = angleInDegrees + Math.PI; + value: function _fit() { + if (new Date().valueOf() - this.touchTime > 700) { + // TODO: fix ugly hack to avoid hammer's double fireing of event (because we use release?) + this.body.emitter.emit('fit', { duration: 700 }); + this.touchTime = new Date().valueOf(); } - - ctx.rotate(angleInDegrees); } }, { - key: '_pointOnCircle', + key: '_stopMovement', /** - * Get a point on a circle - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point + * this stops all movement induced by the navigation buttons + * * @private */ - value: function _pointOnCircle(x, y, radius, percentage) { - var angle = percentage * 2 * Math.PI; - return { - x: x + radius * Math.cos(angle), - y: y - radius * Math.sin(angle) - }; + value: function _stopMovement() { + for (var boundAction in this.boundFunctions) { + if (this.boundFunctions.hasOwnProperty(boundAction)) { + this.body.emitter.off('initRedraw', this.boundFunctions[boundAction]); + this.body.emitter.emit('_stopRendering'); + } + } + this.boundFunctions = {}; } }, { - key: 'select', - value: function select() { - this.selected = true; + key: '_moveUp', + value: function _moveUp() { + this.body.view.translation.y += this.options.keyboard.speed.y; } }, { - key: 'unselect', - value: function unselect() { - this.selected = false; + key: '_moveDown', + value: function _moveDown() { + this.body.view.translation.y -= this.options.keyboard.speed.y; } - }], [{ - key: 'parseOptions', - value: function parseOptions(parentOptions, newOptions) { - var allowDeletion = arguments[2] === undefined ? false : arguments[2]; - - var fields = ['id', 'font', 'from', 'hidden', 'hoverWidth', 'label', 'length', 'line', 'opacity', 'physics', 'selectionWidth', 'selfReferenceSize', 'to', 'title', 'value', 'width']; - - // only deep extend the items in the field array. These do not have shorthand. - util.selectiveDeepExtend(fields, parentOptions, newOptions, allowDeletion); - - util.mergeOptions(parentOptions, newOptions, 'smooth'); - util.mergeOptions(parentOptions, newOptions, 'shadow'); + }, { + key: '_moveLeft', + value: function _moveLeft() { + this.body.view.translation.x += this.options.keyboard.speed.x; + } + }, { + key: '_moveRight', + value: function _moveRight() { + this.body.view.translation.x -= this.options.keyboard.speed.x; + } + }, { + key: '_zoomIn', + value: function _zoomIn() { + this.body.view.scale *= 1 + this.options.keyboard.speed.zoom; + } + }, { + key: '_zoomOut', + value: function _zoomOut() { + this.body.view.scale /= 1 + this.options.keyboard.speed.zoom; + } + }, { + key: 'configureKeyboardBindings', - if (newOptions.dashes !== undefined && newOptions.dashes !== null) { - parentOptions.dashes = newOptions.dashes; - } else if (allowDeletion === true) { - parentOptions.dashes = undefined; - delete parentOptions.dashes; + /** + * bind all keys using keycharm. + */ + value: function configureKeyboardBindings() { + if (this.keycharm !== undefined) { + this.keycharm.destroy(); } - // set the scaling newOptions - if (newOptions.scaling !== undefined && newOptions.scaling !== null) { - if (newOptions.scaling.min !== undefined) { - parentOptions.scaling.min = newOptions.scaling.min; - } - if (newOptions.scaling.max !== undefined) { - parentOptions.scaling.max = newOptions.scaling.max; - } - util.mergeOptions(parentOptions.scaling, newOptions.scaling, 'label'); - } else if (allowDeletion === true) { - parentOptions.scaling = undefined; - delete parentOptions.scaling; - } + if (this.options.keyboard.enabled === true) { - // hanlde multiple input cases for arrows - if (newOptions.arrows !== undefined && newOptions.arrows !== null) { - if (typeof newOptions.arrows === 'string') { - var arrows = newOptions.arrows.toLowerCase(); - if (arrows.indexOf('to') != -1) { - parentOptions.arrows.to.enabled = true; - } - if (arrows.indexOf('middle') != -1) { - parentOptions.arrows.middle.enabled = true; - } - if (arrows.indexOf('from') != -1) { - parentOptions.arrows.from.enabled = true; - } - } else if (typeof newOptions.arrows === 'object') { - util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'to'); - util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'middle'); - util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'from'); + if (this.options.keyboard.bindToWindow === true) { + this.keycharm = keycharm({ container: window, preventDefault: true }); } else { - throw new Error('The arrow newOptions can only be an object or a string. Refer to the documentation. You used:' + JSON.stringify(newOptions.arrows)); + this.keycharm = keycharm({ container: this.canvas.frame, preventDefault: true }); } - } else if (allowDeletion === true) { - parentOptions.arrows = undefined; - delete parentOptions.arrows; - } - // hanlde multiple input cases for color - if (newOptions.color !== undefined && newOptions.color !== null) { - if (util.isString(newOptions.color)) { - parentOptions.color.color = newOptions.color; - parentOptions.color.highlight = newOptions.color; - parentOptions.color.hover = newOptions.color; - parentOptions.color.inherit = false; - } else { - var colorsDefined = false; - if (newOptions.color.color !== undefined) { - parentOptions.color.color = newOptions.color.color;colorsDefined = true; - } - if (newOptions.color.highlight !== undefined) { - parentOptions.color.highlight = newOptions.color.highlight;colorsDefined = true; - } - if (newOptions.color.hover !== undefined) { - parentOptions.color.hover = newOptions.color.hover;colorsDefined = true; - } - if (newOptions.color.inherit !== undefined) { - parentOptions.color.inherit = newOptions.color.inherit; - } - if (newOptions.color.opacity !== undefined) { - parentOptions.color.opacity = Math.min(1, Math.max(0, newOptions.color.opacity)); - } + this.keycharm.reset(); - if (newOptions.color.inherit === undefined && colorsDefined === true) { - parentOptions.color.inherit = false; - } + if (this.activated === true) { + this.keycharm.bind('up', this.bindToRedraw.bind(this, '_moveUp'), 'keydown'); + this.keycharm.bind('down', this.bindToRedraw.bind(this, '_moveDown'), 'keydown'); + this.keycharm.bind('left', this.bindToRedraw.bind(this, '_moveLeft'), 'keydown'); + this.keycharm.bind('right', this.bindToRedraw.bind(this, '_moveRight'), 'keydown'); + this.keycharm.bind('=', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); + this.keycharm.bind('num+', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); + this.keycharm.bind('num-', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); + this.keycharm.bind('-', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); + this.keycharm.bind('[', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); + this.keycharm.bind(']', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); + this.keycharm.bind('pageup', this.bindToRedraw.bind(this, '_zoomIn'), 'keydown'); + this.keycharm.bind('pagedown', this.bindToRedraw.bind(this, '_zoomOut'), 'keydown'); + + this.keycharm.bind('up', this.unbindFromRedraw.bind(this, '_moveUp'), 'keyup'); + this.keycharm.bind('down', this.unbindFromRedraw.bind(this, '_moveDown'), 'keyup'); + this.keycharm.bind('left', this.unbindFromRedraw.bind(this, '_moveLeft'), 'keyup'); + this.keycharm.bind('right', this.unbindFromRedraw.bind(this, '_moveRight'), 'keyup'); + this.keycharm.bind('=', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); + this.keycharm.bind('num+', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); + this.keycharm.bind('num-', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); + this.keycharm.bind('-', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); + this.keycharm.bind('[', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); + this.keycharm.bind(']', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); + this.keycharm.bind('pageup', this.unbindFromRedraw.bind(this, '_zoomIn'), 'keyup'); + this.keycharm.bind('pagedown', this.unbindFromRedraw.bind(this, '_zoomOut'), 'keyup'); } - } else if (allowDeletion === true) { - parentOptions.color = undefined; - delete parentOptions.color; } } }]); - return Edge; + return NavigationHandler; })(); - exports['default'] = Edge; + exports['default'] = NavigationHandler; module.exports = exports['default']; /***/ }, -/* 85 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 85; + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + /** + * Popup is a class to create a popup window with some text + * @param {Element} container The container object. + * @param {Number} [x] + * @param {Number} [y] + * @param {String} [text] + * @param {Object} [style] An object containing borderColor, + * backgroundColor, etc. + */ + + var Popup = (function () { + function Popup(container) { + _classCallCheck(this, Popup); + + this.container = container; + + this.x = 0; + this.y = 0; + this.padding = 5; + this.hidden = false; + + // create the frame + this.frame = document.createElement('div'); + this.frame.className = 'vis-network-tooltip'; + this.container.appendChild(this.frame); + } + + _createClass(Popup, [{ + key: 'setPosition', + + /** + * @param {number} x Horizontal position of the popup window + * @param {number} y Vertical position of the popup window + */ + value: function setPosition(x, y) { + this.x = parseInt(x); + this.y = parseInt(y); + } + }, { + key: 'setText', + + /** + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content + */ + value: function setText(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } else { + this.frame.innerHTML = content; // string containing text or HTML + } + } + }, { + key: 'show', + + /** + * Show the popup window + * @param {boolean} [doShow] Show or hide the window + */ + value: function show(doShow) { + if (doShow === undefined) { + doShow = true; + } + + if (doShow === true) { + var height = this.frame.clientHeight; + var width = this.frame.clientWidth; + var maxHeight = this.frame.parentNode.clientHeight; + var maxWidth = this.frame.parentNode.clientWidth; + + var top = this.y - height; + if (top + height + this.padding > maxHeight) { + top = maxHeight - height - this.padding; + } + if (top < this.padding) { + top = this.padding; + } + + var left = this.x; + if (left + width + this.padding > maxWidth) { + left = maxWidth - width - this.padding; + } + if (left < this.padding) { + left = this.padding; + } + + this.frame.style.left = left + 'px'; + this.frame.style.top = top + 'px'; + this.frame.style.visibility = 'visible'; + this.hidden = false; + } else { + this.hide(); + } + } + }, { + key: 'hide', + + /** + * Hide the popup window + */ + value: function hide() { + this.hidden = true; + this.frame.style.visibility = 'hidden'; + } + }]); + + return Popup; + })(); + exports['default'] = Popup; + module.exports = exports['default']; /***/ }, -/* 86 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; @@ -37086,8 +37073,45 @@ return /******/ (function(modules) { // webpackBootstrap +/***/ }, +/* 86 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 86; + + /***/ }, /* 87 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 88 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; + + /* WEBPACK VAR INJECTION */}.call(exports, {})) + +/***/ }, +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37188,7 +37212,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 88 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37272,7 +37296,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 89 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37375,7 +37399,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 90 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37475,7 +37499,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 91 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37535,7 +37559,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 92 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37595,7 +37619,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 93 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37698,7 +37722,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 94 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37808,7 +37832,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 95 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37888,7 +37912,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 96 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37949,7 +37973,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 97 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38009,7 +38033,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 98 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38089,7 +38113,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 99 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38149,7 +38173,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 100 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38209,7 +38233,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 101 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38367,7 +38391,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 102 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38633,7 +38657,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports['default']; /***/ }, -/* 103 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38744,30 +38768,6 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = StraightEdge; module.exports = exports['default']; -/***/ }, -/* 104 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } - - -/***/ }, -/* 105 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; - - /* WEBPACK VAR INJECTION */}.call(exports, {})) - /***/ }, /* 106 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index ab5e9524..5b216407 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Images","dotparser","gephiParser","Graph","Error","moment","hammer","Hammer","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","assignAllKeys","obj","prop","hasOwnProperty","fillIfDefined","parentObj","newObj","undefined","protoExtend","a","b","i","arguments","length","other","extend","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","copyAndExtendArray","arr","newValue","newArr","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","_next","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","pointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","_contentToString","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","outerHTML","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","en","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","isFirst","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldSubGroupId","oldGroup","_constructByEndArray","itemProps","initialX","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","pop","childNodes","nodeValue","_this","clickToUse","nodes","nodeIndices","edges","edgeIndices","functions","createNode","createEdge","once","eventListeners","onTap","onTouch","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onMouseWheel","onPinch","onMouseMove","onRelease","onContext","view","bindEventListeners","images","_Groups2","_Canvas2","selectionHandler","_SelectionHandler2","interactionHandler","_InteractionHandler2","_View2","renderer","_CanvasRenderer2","physics","_PhysicsEngine2","layoutEngine","_LayoutEngine2","clustering","_ClusterEngine2","manipulation","_ManipulationSystem2","nodesHandler","_NodesHandler2","edgesHandler","_EdgesHandler2","configurationSystem","_ConfigurationSystem2","_interopRequireWildcard","__esModule","default","_Groups","_NodesHandler","_EdgesHandler","_PhysicsEngine","_ClusterEngine","_CanvasRenderer","_Canvas","_View","_InteractionHandler","_SelectionHandler","_LayoutEngine","_ManipulationSystem","_ConfigurationSystem","_Validator","_Validator2","_allOptions","_allOptions2","Activator","errorFound","validate","printStyle","layout","rendering","interaction","activator","_createKeyBinds","_updateVisibleIndices","nodeId","edgeId","_this2","updatePhysicsIndices","_updateValueRange","unselectAll","dotData","DOTToGraph","gephi","gephiData","parseGephi","valueTotal","setValueRange","isActive","active","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","getBoundingBox","getConnectedNodes","getEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","selectNodes","selectEdges","getPosition","focusOnNode","releaseNode","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","src","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","node","graphs","attr","addEdge","edge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","image","shape","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","inheritColor","allowedToMove","gEdges","gNodes","gEdge","source","gNode","allowedToMoveX","allowedToMoveY","propagating","mixin","_callbacks","self","removeListener","removeAllListeners","callbacks","cb","listeners","hasListeners","hammerUtil","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","properties","_redrawTimer","set","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","inputHandler","isTouching","isFinal","isReleasing","offTouch","offRelease","en_EN","en_US","nl","nl_NL","nl_BE","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","global","utils_hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","create_utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","code","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","abbr","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","moment_calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","_processing","propagatedHandler","_handled","stopped","firstTarget","_handlers","Manager","PropagatingHammer","_on","_off","_emit","_destroy","pointerType","handler","eventType","exportName","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","each","iterator","dest","inherit","child","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","str","find","inArray","findByKey","uniqueArray","results","prefixed","property","prefix","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","init","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","pointersLen","pointers","changedPointersLen","changedPointers","INPUT_START","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","angle","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","rotation","getRotation","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","getVelocity","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","dispatchEvent","TEST_ELEMENT","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","withState","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","overlay","_onTapOverlay","bodyHammer","prevent_default","_hasParent","deactivate","keycharm","escListener","activate","unbind","webpackContext","req","resolve","webpackPolyfill","paths","children","__webpack_amd_options__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","_classCallCheck","instance","Constructor","_createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","Groups","defaultIndex","groupsArray","groupIndex","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_Node","_Node2","_Label","_Label2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","fixed","face","strokeColor","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","_properties","positionInitially","changedData","dataChanged","constants","constructorClass","dataArray","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_Edge","_Edge2","EdgesHandler","edgesListeners","arrows","scaleFactor","dashes","pattern","hoverWidth","selectionWidth","selfReferenceSize","smooth","dynamic","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","via","supportNodes","edgeType","colorDirty","_BarnesHutSolver","_BarnesHutSolver2","_Repulsion","_Repulsion2","_HierarchicalRepulsion","_HierarchicalRepulsion2","_SpringSolver","_SpringSolver2","_HierarchicalSpringSolver","_HierarchicalSpringSolver2","_CentralGravitySolver","_CentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","freezeCache","renderTimer","stabilized","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","solver","stabilization","iterations","updateInterval","onlyDynamicEdges","timestep","initPhysics","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","startedStabilization","calculateForces","moveNodes","revert","nodeIds","vx","vy","nodesPresent","vminCorrected","nodeVelocity","_performStep","totalVelocity","solve","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","_Cluster","_Cluster2","ClusterEngine","clusteredNodes","hubsize","_getHubSize","tyepof","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","_cloneOptions","_cluster","clusters","childNodeId","_getConnectedId","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","objId","amountOfConnections","newEdges","childNode","childKeys","otherNodeId","otherOnTo","clusterEdgeProperties","clusterId","processProperties","childNodesOptions","childEdgesOptions","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","togglePhysics","minX","maxX","minY","maxY","lenght","clusterNodeId","containedNode","cleanup","clusterStack","fromArray","average","averageSquared","hubCounter","largestHub","letiance","standardDeviation","hubThreshold","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","pixelRatio","allowRedrawRequests","_requestRedraw","_startRendering","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_renderStep","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","save","translate","_drawEdges","_drawNodes","controlNodesActive","_drawControlNodes","restore","alwaysShow","isSelected","connected","browserType","Canvas","onresize","_prepareValue","tabIndex","_bindHammer","pinch","hammerFrame","emitEvent","oldWidth","oldHeight","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","specificNodes","zoomLevel","initialZoom","positionDefined","predefinedPosition","_getRange","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_findCenter","animationOptions","animation","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_lockedRedraw","finished","_NavigationHandler","_NavigationHandler2","_Popup","_Popup2","InteractionHandler","navigationHandler","hoverObj","popup","popupObj","popupTimer","dragNodes","dragView","zoomView","hoverEnabled","navigationButtons","tooltipDelay","keyboard","speed","bindToWindow","pinched","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdges","selectedNodes","selectObject","selectionObj","xFixed","yFixed","_handleDragStart","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","Node","Edge","blurObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","SelectionHandler","selectConnectedEdges","updateSelection","selectionChanged","deselectObject","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","clusterSize","_addToHover","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","randomSeed","optionsBackup","hierarchical","levelSeparation","sortMethod","hierarchicalLevels","setupHierarchicalLayout","allOptions","prevHierarchicalState","adaptAllOptions","nodesArray","isFixed","seededRandom","definedLevel","undefinedLevel","nodeSpacing","_determineLevelsByHubsize","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","positionedNodes","_placeBranchNodes","hubSize","_setLevel","minLevel","_setLevelDirected","parentId","parentLevel","childNodeLevel","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","functionality","editNode","editEdge","deleteNode","deleteEdge","handlerFunctions","controlNodeStyle","_clean","_restore","_setup","_bindHammerToDiv","toggleEditMode","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_temporaryBindEvent","_createBackButton","_createDescription","addDescription","_performAddNode","_getSelectedNode","finalizedData","alert","editClusterError","edgeDescription","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","editEdgeDescription","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","positions","findBorderPositions","_this3","deleteFunction","deleteClusterError","_createWrappers","_removeManipulationDOM","_createButton","edit","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","del","back","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","createEdgeError","_performEditEdge","targetNode","connectionEdge","connectFromId","_performCreateEdge","clickData","_this4","defaultData","sourceNodeId","targetNodeId","_this5","_this6","_ColorPicker","_ColorPicker2","ConfigurationSystem","changedOptions","possibleOptions","actualOptions","configure","configureContainer","domElements","colorPicker","wrapper","optionObj","_makeItem","_makeHeader","_handleObject","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","insertTo","newPath","_len","_key","div","objectLabel","selectedValue","_update","_makeLabel","oninput","checkbox","checked","defaultColor","_showColorPicker","bodyRect","pickerX","pickerY","setColor","setCallback","colorString","subObj","_getValue","_handleArray","_handleString","_makeCheckbox","enabledPath","enabledValue","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","Validator","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","checkFields","__type__","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","undef","closestMatch","op","levenshteinDistance","matrix","boolean","CanvasRenderingContext2D","circle","square","s2","ir","triangleDown","star","n","diamond","roundRect","r2d","ellipse","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","database","wEllipse","hEllipse","ymb","yeb","arrow","xt","yt","xi","yi","xl","yl","xr","yr","dashedLine","x2","y2","patternLength","slope","distRemaining","patternIndex","dashLength","_Box","_Box2","_Circle","_Circle2","_CircularImage","_CircularImage2","_Database","_Database2","_Diamond","_Diamond2","_Dot","_Dot2","_Ellipse","_Ellipse2","_Icon","_Icon2","_Image","_Image2","_Square","_Square2","_Star","_Star2","_Text","_Text2","_Triangle","_Triangle2","_TriangleDown","_TriangleDown2","imagelist","grouplist","globalOptions","baseSize","baseFontSize","labelModule","status","groupObj","imageObj","distanceToBorder","sizeDiff","fontDiff","resize","parentOptions","newOptions","parsedColor","_slicedToArray","Symbol","_arr","_n","_e","_s","err","Label","yLine","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fillRect","fontSize","_getColor","_getColor2","fontColor","_setAlignment","_setAlignment2","lineJoin","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_BezierEdgeDynamic","_BezierEdgeDynamic2","_BezierEdgeStatic","_BezierEdgeStatic2","_StraightEdge","_StraightEdge2","baseWidth","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","drawLine","drawArrows","drawLabel","viaNode","drawArrowHead","node1","node2","getPoint","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","BarnesHutSolver","barnesHutTree","thetaInversed","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","MAX_VALUE","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","gravity","_get","receiver","desc","getOwnPropertyDescriptor","getPrototypeOf","_inherits","subClass","superClass","__proto__","_Node3","Cluster","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","_stopMovement","configureKeyboardBindings","loadNavigationElements","cleanNavigation","_navigationReleaseOverload","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","boundAction","unbindFromRedraw","Popup","doShow","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","_setColor","_generateHueCircle","storePrevious","_hide","_updatePicker","angleConvert","colorPickerSelector","colorPickerCanvas","putImageData","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","_moveSelector","sat","hfac","sfac","getImageData","newLeft","_NodeBase2","_NodeBase3","Box","_NodeBase","textSize","getTextSize","selectionLineWidth","enableShadow","disableShadow","_CircleImageBase2","_CircleImageBase3","Circle","_CircleImageBase","diameter","_drawRawCircle","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","_distanceToBorder","Database","networkScaleInv","_ShapeBase2","_ShapeBase3","Diamond","_ShapeBase","_resizeShape","_drawShape","Dot","Ellipse","Icon","_icon","iconTextSpacing","Square","Star","Text","Triangle","TriangleDown","_BezierEdgeBase2","_BezierEdgeBase3","BezierEdgeDynamic","_BezierEdgeBase","setupSupportNode","parentEdgeId","positionBezierNode","quadraticCurveTo","nearNode","_findBorderPositionBezier","x1","y1","x3","y3","_getDistanceToBezierEdge","BezierEdgeStatic","_getViaCoordinates","xVia","yVia","pi","originalAngle","myAngle","_EdgeBase2","_EdgeBase3","StraightEdge","_EdgeBase","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_getDistanceToLine","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","CircleImageBase","ratio","globalAlpha","drawImage","labelDimensions","ShapeBase","sizeMultiplier","BezierEdgeBase","distanceToPoint","difference","minDistance","lastX","lastY","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData","_getCircleData2","_circle","lineCap","setLineDash","altLength","lineDashOffset","_getCircleData3","_getCircleData32","_getCircleData4","_getCircleData42","_findBorderPosition","_findBorderPositionCircle","_getCircleData5","_getCircleData52","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData6","_getCircleData62","px","py","something","u","arrowPos","guideOffset","findBorderPosition","guidePos","_angle","_getCircleData7","_getCircleData72","_length"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAK9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,OAAQlD,EAAoB,IAC5BmD,UAAWnD,EAAoB,IAC/BoD,YAAapD,EAAoB,KAInCN,EAAQ2D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlB5D,EAAQ6D,OAASvD,EAAoB,IACrCN,EAAQ8D,OAASxD,EAAoB,IACrCN,EAAQ+D,OAASzD,EAAoB,KAIjC,SAASL,EAAQD,EAASM,GAQ9B,GAAIuD,GAASvD,EAAoB,GAOjCN,GAAQgE,SAAW,SAAUC,GAC3B,MAAOA,aAAkBC,SAA2B,gBAAVD,IAG5CjE,EAAQmE,mBAAqB,SAAUC,GACrC,KAAoC,GAA7BA,EAAUC,iBACfrE,EAAQmE,mBAAmBC,EAAUE,YACrCF,EAAUG,YAAYH,EAAUE,aAapCtE,EAAQwE,UAAY,SAAUC,EAAKC,EAAKC,EAAOC,GAC7C,GAAIF,GAAOD,EACT,MAAO,EAEP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAIE,EAAQH,GAAOI,IASvC7E,EAAQ+E,SAAW,SAAUd,GAC3B,MAAOA,aAAkBe,SAA2B,gBAAVf,IAQ5CjE,EAAQiF,OAAS,SAAUhB,GACzB,GAAIA,YAAkBiB,MACpB,OAAO,CACF,IAAIlF,EAAQ+E,SAASd,GAAS,CAEnC,GAAIkB,GAAQC,EAAaC,KAAKpB,EAC9B,IAAIkB,EACF,OAAO,CACF,KAAKG,MAAMJ,KAAKK,MAAMtB,IAC3B,OAAO,EAIX,OAAO,GAQTjE,EAAQwF,YAAc,SAAUvB,GAC9B,MAAyB,mBAAXwB,SAA0BA,OAAOC,eAAiBD,OAAOC,cAAcC,WAAa1B,YAAkBwB,QAAOC,cAAcC,WAQ3I3F,EAAQ4F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MAAsB,MAAhBhB,KAAKiB,UACrBC,SAAS,IAGb,OAAOH,KAAOA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAOA,IAAOA,KAQlF7F,EAAQiG,cAAgB,SAAUC,EAAKtB,GACrC,IAAK,GAAIuB,KAAQD,GACXA,EAAIE,eAAeD,IACI,gBAAdD,GAAIC,KACbD,EAAIC,GAAQvB,IAWpB5E,EAAQqG,cAAgB,SAAUC,EAAWC,GAC3C,IAAK,GAAIJ,KAAQG,GACME,SAAjBD,EAAOJ,IACmB,gBAAjBI,GAAOJ,KAChBG,EAAUH,GAAQI,EAAOJ,KAajCnG,EAAQyG,YAAc,SAAUC,EAAGC,GACjC,IAAK,GAAIC,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,GAAIG,GAAQF,UAAUD,EACtB,KAAK,GAAIT,KAAQY,GACfL,EAAEP,GAAQY,EAAMZ,GAGpB,MAAOO,IAUT1G,EAAQgH,OAAS,SAAUN,EAAGC,GAC5B,IAAK,GAAIC,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,GAAIG,GAAQF,UAAUD,EACtB,KAAK,GAAIT,KAAQY,GACXA,EAAMX,eAAeD,KACvBO,EAAEP,GAAQY,EAAMZ,IAItB,MAAOO,IAWT1G,EAAQiH,gBAAkB,SAAUC,EAAOR,EAAGC,GAC5C,IAAKQ,MAAMC,QAAQF,GACjB,KAAM,IAAItD,OAAM,uDAGlB,KAAK,GAAIgD,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAGpC,IAAK,GAFDG,GAAQF,UAAUD,GAEb9F,EAAI,EAAGA,EAAIoG,EAAMJ,OAAQhG,IAAK,CACrC,GAAIqF,GAAOe,EAAMpG,EACbiG,GAAMX,eAAeD,KACvBO,EAAEP,GAAQY,EAAMZ,IAItB,MAAOO,IAWT1G,EAAQqH,oBAAsB,SAAUH,EAAOR,EAAGC,GAEhD,GAAIQ,MAAMC,QAAQT,GAChB,KAAM,IAAIW,WAAU,yCAEtB,KAAK,GAAIV,GAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAEpC,IAAK,GADDG,GAAQF,UAAUD,GACb9F,EAAI,EAAGA,EAAIoG,EAAMJ,OAAQhG,IAAK,CACrC,GAAIqF,GAAOe,EAAMpG,EACjB,IAAIiG,EAAMX,eAAeD,GACvB,GAAIQ,EAAER,IAASQ,EAAER,GAAMoB,cAAgBC,OACrBhB,SAAZE,EAAEP,KACJO,EAAEP,OAEAO,EAAEP,GAAMoB,cAAgBC,OAC1BxH,EAAQyH,WAAWf,EAAEP,GAAOQ,EAAER,IAE9BO,EAAEP,GAAQQ,EAAER,OAET,CAAA,GAAIgB,MAAMC,QAAQT,EAAER,IACzB,KAAM,IAAImB,WAAU,yCAEpBZ,GAAEP,GAAQQ,EAAER,IAKpB,MAAOO,IAWT1G,EAAQ0H,uBAAyB,SAAUR,EAAOR,EAAGC,GAEnD,GAAIQ,MAAMC,QAAQT,GAChB,KAAM,IAAIW,WAAU,yCAEtB,KAAK,GAAInB,KAAQQ,GACf,GAAIA,EAAEP,eAAeD,IACQ,IAAvBe,EAAMS,QAAQxB,GAChB,GAAIQ,EAAER,IAASQ,EAAER,GAAMoB,cAAgBC,OACrBhB,SAAZE,EAAEP,KACJO,EAAEP,OAEAO,EAAEP,GAAMoB,cAAgBC,OAC1BxH,EAAQyH,WAAWf,EAAEP,GAAOQ,EAAER,IAE9BO,EAAEP,GAAQQ,EAAER,OAET,CAAA,GAAIgB,MAAMC,QAAQT,EAAER,IACzB,KAAM,IAAImB,WAAU,yCAEpBZ,GAAEP,GAAQQ,EAAER,GAKpB,MAAOO,IAWT1G,EAAQyH,WAAa,SAAUf,EAAGC,EAAGF,GACnC,IAAK,GAAIN,KAAQQ,GACf,GAAIA,EAAEP,eAAeD,IAASM,KAAgB,EAC5C,GAAIE,EAAER,IAASQ,EAAER,GAAMoB,cAAgBC,OACrBhB,SAAZE,EAAEP,KACJO,EAAEP,OAEAO,EAAEP,GAAMoB,cAAgBC,OAC1BxH,EAAQyH,WAAWf,EAAEP,GAAOQ,EAAER,GAAOM,GAErCC,EAAEP,GAAQQ,EAAER,OAET,IAAIgB,MAAMC,QAAQT,EAAER,IAAQ,CACjCO,EAAEP,KACF,KAAK,GAAIS,GAAI,EAAGA,EAAID,EAAER,GAAMW,OAAQF,IAClCF,EAAEP,GAAMyB,KAAKjB,EAAER,GAAMS,QAGvBF,GAAEP,GAAQQ,EAAER,EAIlB,OAAOO,IAUT1G,EAAQ6H,WAAa,SAAUnB,EAAGC,GAChC,GAAID,EAAEI,QAAUH,EAAEG,OAAQ,OAAO,CAEjC,KAAK,GAAIF,GAAI,EAAGkB,EAAMpB,EAAEI,OAAYgB,EAAJlB,EAASA,IACvC,GAAIF,EAAEE,IAAMD,EAAEC,GAAI,OAAO,CAG3B,QAAO,GAYT5G,EAAQ+H,QAAU,SAAU9D,EAAQ+D,GAClC,GAAI7C,EAEJ,IAAeqB,SAAXvC,EACF,MAAOuC,OAET,IAAe,OAAXvC,EACF,MAAO,KAGT,KAAK+D,EACH,MAAO/D,EAET,IAAsB,gBAAT+D,MAAwBA,YAAgBhD,SACnD,KAAM,IAAIpB,OAAM,wBAIlB,QAAQoE,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQhE,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOiE,UAEvB,KAAK,SACL,IAAK,SACH,MAAOlD,QAAOf,EAEhB,KAAK,OACH,GAAIjE,EAAQgE,SAASC,GACnB,MAAO,IAAIiB,MAAKjB,EAElB,IAAIA,YAAkBiB,MACpB,MAAO,IAAIA,MAAKjB,EAAOiE,UAClB,IAAIrE,EAAOsE,SAASlE,GACzB,MAAO,IAAIiB,MAAKjB,EAAOiE,UAEzB,IAAIlI,EAAQ+E,SAASd,GAEnB,MADAkB,GAAQC,EAAaC,KAAKpB,GACtBkB,EAEK,GAAID,MAAKhB,OAAOiB,EAAM,KAEtBtB,EAAOI,GAAQmE,QAGxB,MAAM,IAAIxE,OAAM,iCAAmC5D,EAAQqI,QAAQpE,GAAU,gBAGjF,KAAK,SACH,GAAIjE,EAAQgE,SAASC,GACnB,MAAOJ,GAAOI,EAEhB,IAAIA,YAAkBiB,MACpB,MAAOrB,GAAOI,EAAOiE,UAChB,IAAIrE,EAAOsE,SAASlE,GACzB,MAAOJ,GAAOI,EAEhB,IAAIjE,EAAQ+E,SAASd,GAEnB,MADAkB,GAAQC,EAAaC,KAAKpB,GAGjBJ,EAFLsB,EAEYjB,OAAOiB,EAAM,IAEblB,EAGhB,MAAM,IAAIL,OAAM,iCAAmC5D,EAAQqI,QAAQpE,GAAU,gBAGjF,KAAK,UACH,GAAIjE,EAAQgE,SAASC,GACnB,MAAO,IAAIiB,MAAKjB,EACX,IAAIA,YAAkBiB,MAC3B,MAAOjB,GAAOqE,aACT,IAAIzE,EAAOsE,SAASlE,GACzB,MAAOA,GAAOmE,SAASE,aAClB,IAAItI,EAAQ+E,SAASd,GAE1B,MADAkB,GAAQC,EAAaC,KAAKpB,GACtBkB,EAEK,GAAID,MAAKhB,OAAOiB,EAAM,KAAKmD,cAE3B,GAAIpD,MAAKjB,GAAQqE,aAG1B,MAAM,IAAI1E,OAAM,iCAAmC5D,EAAQqI,QAAQpE,GAAU,mBAGjF,KAAK,UACH,GAAIjE,EAAQgE,SAASC,GACnB,MAAO,SAAWA,EAAS,IACtB,IAAIA,YAAkBiB,MAC3B,MAAO,SAAWjB,EAAOiE,UAAY,IAChC,IAAIlI,EAAQ+E,SAASd,GAAS,CACnCkB,EAAQC,EAAaC,KAAKpB,EAC1B,IAAIW,EAOJ,OAJEA,GAFEO,EAEM,GAAID,MAAKhB,OAAOiB,EAAM,KAAK+C,UAE3B,GAAIhD,MAAKjB,GAAQiE,UAEpB,SAAWtD,EAAQ,KAE1B,KAAM,IAAIhB,OAAM,iCAAmC5D,EAAQqI,QAAQpE,GAAU,mBAGjF,SACE,KAAM,IAAIL,OAAM,iBAAmBoE,EAAO,MAOhD,IAAI5C,GAAe,qBAOnBpF,GAAQqI,QAAU,SAAUpE,GAC1B,GAAI+D,SAAc/D,EAElB,OAAY,UAAR+D,EACa,OAAX/D,EACK,OAELA,YAAkBgE,SACb,UAELhE,YAAkBC,QACb,SAELD,YAAkBe,QACb,SAELmC,MAAMC,QAAQnD,GACT,QAELA,YAAkBiB,MACb,OAEF,SACU,UAAR8C,EACF,SACU,WAARA,EACF,UACU,UAARA,EACF,SACWxB,SAATwB,EACF,YAGFA,GAUThI,EAAQuI,mBAAqB,SAAUC,EAAKC,GAE1C,IAAK,GADDC,MACK9B,EAAI,EAAGA,EAAI4B,EAAI1B,OAAQF,IAC9B8B,EAAOd,KAAKY,EAAI5B,GAGlB,OADA8B,GAAOd,KAAKa,GACLC,GAST1I,EAAQ2I,gBAAkB,SAAUC,GAClC,MAAOA,GAAKC,wBAAwBC,MAStC9I,EAAQ+I,eAAiB,SAAUH,GACjC,MAAOA,GAAKC,wBAAwBG,KAQtChJ,EAAQiJ,aAAe,SAAUL,EAAMM,GACrC,GAAIC,GAAUP,EAAKM,UAAUE,MAAM,IACD,KAA9BD,EAAQxB,QAAQuB,KAClBC,EAAQvB,KAAKsB,GACbN,EAAKM,UAAYC,EAAQE,KAAK,OASlCrJ,EAAQsJ,gBAAkB,SAAUV,EAAMM,GACxC,GAAIC,GAAUP,EAAKM,UAAUE,MAAM,KAC/BG,EAAQJ,EAAQxB,QAAQuB,EACf,KAATK,IACFJ,EAAQK,OAAOD,EAAO,GACtBX,EAAKM,UAAYC,EAAQE,KAAK,OAalCrJ,EAAQyJ,QAAU,SAAUxF,EAAQyF,GAClC,GAAI9C,GAAGkB,CACP,IAAIX,MAAMC,QAAQnD,GAEhB,IAAK2C,EAAI,EAAGkB,EAAM7D,EAAO6C,OAAYgB,EAAJlB,EAASA,IACxC8C,EAASzF,EAAO2C,GAAIA,EAAG3C,OAIzB,KAAK2C,IAAK3C,GACJA,EAAOmC,eAAeQ,IACxB8C,EAASzF,EAAO2C,GAAIA,EAAG3C,IAY/BjE,EAAQ2J,QAAU,SAAU1F,GAC1B,GAAI2F,KAEJ,KAAK,GAAIzD,KAAQlC,GACXA,EAAOmC,eAAeD,IAAOyD,EAAMhC,KAAK3D,EAAOkC,GAGrD,OAAOyD,IAUT5J,EAAQ6J,eAAiB,SAAU5F,EAAQ6F,EAAKlF,GAC9C,MAAIX,GAAO6F,KAASlF,GAClBX,EAAO6F,GAAOlF,GACP,IAEA,GAYX5E,EAAQ+J,iBAAmB,SAAUC,EAASC,EAAQC,EAAUC,GAC1DH,EAAQD,kBACSvD,SAAf2D,IAA0BA,GAAa,GAE5B,eAAXF,GAA2BG,UAAUC,UAAU1C,QAAQ,YAAc,IACvEsC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvClK,EAAQuK,oBAAsB,SAAUP,EAASC,EAAQC,EAAUC,GAC7DH,EAAQO,qBAES/D,SAAf2D,IAA0BA,GAAa,GAE5B,eAAXF,GAA2BG,UAAUC,UAAU1C,QAAQ,YAAc,IACvEsC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvClK,EAAQyK,eAAiB,SAAUC,GAC5BA,IAAOA,EAAQC,OAAOD,OAEvBA,EAAMD,eACRC,EAAMD,iBAENC,EAAME,aAAc,GASxB5K,EAAQ6K,UAAY,SAAUH,GAEvBA,IACHA,EAAQC,OAAOD,MAGjB,IAAII,EAaJ,OAXIJ,GAAMI,OACRA,EAASJ,EAAMI,OACNJ,EAAMK,aACfD,EAASJ,EAAMK,YAGMvE,QAAnBsE,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQT9K,EAAQkL,UAAY,SAAUlB,EAASmB,GAGrC,IAFA,GAAIC,GAAIpB,EAEDoB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTjL,EAAQqL,UAQRrL,EAAQqL,OAAOC,UAAY,SAAU1G,EAAO2G,GAK1C,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACc,GAATA,EAGF2G,GAAgB,MASzBvL,EAAQqL,OAAOG,SAAW,SAAU5G,EAAO2G,GAKzC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACKV,OAAOU,IAAU2G,GAAgB,KAGnCA,GAAgB,MASzBvL,EAAQqL,OAAOI,SAAW,SAAU7G,EAAO2G,GAKzC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGT2G,GAAgB,MASzBvL,EAAQqL,OAAOK,OAAS,SAAU9G,EAAO2G,GAKvC,MAJoB,kBAAT3G,KACTA,EAAQA,KAGN5E,EAAQ+E,SAASH,GACZA,EACE5E,EAAQgE,SAASY,GACnBA,EAAQ,KAER2G,GAAgB,MAU3BvL,EAAQqL,OAAOM,UAAY,SAAU/G,EAAO2G,GAK1C,MAJoB,kBAAT3G,KACTA,EAAQA,KAGHA,GAAS2G,GAAgB,MASlCvL,EAAQ4L,SAAW,SAAUC,GAE3B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAAUlL,EAAGoL,EAAGC,EAAGtF,GACnD,MAAOqF,GAAIA,EAAIC,EAAIA,EAAItF,EAAIA,GAE7B,IAAIuF,GAAS,4CAA4C7G,KAAKwG,EAC9D,OAAOK,IACLF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvBvF,EAAGwF,SAASD,EAAO,GAAI,KACrB,MASNlM,EAAQoM,gBAAkB,SAAUC,EAAOC,GACzC,GAA4B,IAAxBD,EAAM1E,QAAQ,OAAc,CAC9B,GAAI4E,GAAMF,EAAMG,OAAOH,EAAM1E,QAAQ,KAAO,GAAGoE,QAAQ,IAAK,IAAI3C,MAAM,IACtE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAExE,GAAIC,GAAMvM,EAAQ4L,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAEA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAI5F,EAAI,IAAM2F,EAAU,KAa3EtM,EAAQyM,SAAW,SAAUC,EAAKC,EAAOC,GACvC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAM5G,SAAS,IAAI6G,MAAM,IASlF7M,EAAQ8M,WAAa,SAAUT,GAC7B,GAAIxL,EACJ,IAAIb,EAAQ+E,SAASsH,GAAQ,CAC3B,GAAIrM,EAAQ+M,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAGH,EAAMvF,OAAS,GAAGsC,MAAM,IAC5DiD,GAAQrM,EAAQyM,SAASF,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAE/C,GAAIvM,EAAQgN,WAAWX,GAAQ,CAC7B,GAAIY,GAAMjN,EAAQkN,SAASb,GACvBc,GAAoBC,EAAGH,EAAIG,EAAGC,EAAW,IAARJ,EAAII,EAAUC,EAAGxI,KAAKL,IAAI,EAAW,KAARwI,EAAIK,IAClEC,GAAmBH,EAAGH,EAAIG,EAAGC,EAAGvI,KAAKL,IAAI,EAAW,KAARwI,EAAIK,GAAWA,EAAW,GAARL,EAAIK,GAClEE,EAAiBxN,EAAQyN,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACrFI,EAAkB1N,EAAQyN,SAASN,EAAgBC,EAAGD,EAAgBE,EAAGF,EAAgBG,EAE7FzM,IACE8M,WAAYtB,EACZuB,OAAQJ,EACRK,WACEF,WAAYD,EACZE,OAAQJ,GAEVM,OACEH,WAAYD,EACZE,OAAQJ,QAIZ3M,IACE8M,WAAYtB,EACZuB,OAAQvB,EACRwB,WACEF,WAAYtB,EACZuB,OAAQvB,GAEVyB,OACEH,WAAYtB,EACZuB,OAAQvB,QAKdxL,MACAA,EAAE8M,WAAatB,EAAMsB,YAAcnH,OACnC3F,EAAE+M,OAASvB,EAAMuB,QAAUpH,OAEvBxG,EAAQ+E,SAASsH,EAAMwB,WACzBhN,EAAEgN,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAGpBhN,EAAEgN,aACFhN,EAAEgN,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcnH,OAC1E3F,EAAEgN,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUpH,QAGhExG,EAAQ+E,SAASsH,EAAMyB,OACzBjN,EAAEiN,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAGpBjN,EAAEiN,SACFjN,EAAEiN,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcnH,OAC9D3F,EAAEiN,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUpH,OAI1D,OAAO3F,IAYTb,EAAQ+N,SAAW,SAAUrB,EAAKC,EAAOC,GACvCF,GAAY,IAAIC,GAAgB,IAAIC,GAAc,GAClD,IAAIoB,GAASlJ,KAAKL,IAAIiI,EAAK5H,KAAKL,IAAIkI,EAAOC,IACvCqB,EAASnJ,KAAKJ,IAAIgI,EAAK5H,KAAKJ,IAAIiI,EAAOC,GAG3C,IAAIoB,GAAUC,EACZ,OAASb,EAAG,EAAGC,EAAG,EAAGC,EAAGU,EAI1B,IAAIE,GAAIxB,GAAOsB,EAASrB,EAAQC,EAAOA,GAAQoB,EAAStB,EAAMC,EAAQC,EAAOF,EACzEU,EAAIV,GAAOsB,EAAS,EAAIpB,GAAQoB,EAAS,EAAI,EAC7CG,EAAM,IAAMf,EAAIc,GAAKD,EAASD,IAAW,IACzCI,GAAcH,EAASD,GAAUC,EACjCrJ,EAAQqJ,CACZ,QAASb,EAAGe,EAAKd,EAAGe,EAAYd,EAAG1I,GAGrC,IAAIyJ,IAEFjF,MAAO,SAAekF,GACpB,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKK,QAAQ,SAAU+E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBU,EAAM4E,EAAM,GAAGD,OACf7J,EAAQ8J,EAAM,GAAGD,MACrBF,GAAOzE,GAAOlF,KAIX2J,GAITlF,KAAM,SAAckF,GAClB,MAAO/G,QAAOmH,KAAKJ,GAAQK,IAAI,SAAU9E,GACvC,MAAOA,GAAM,KAAOyE,EAAOzE,KAC1BT,KAAK,OASZrJ,GAAQ6O,WAAa,SAAU7E,EAASsE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMY,EAAQwE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAASvO,EAAQgH,OAAO8H,EAAeC,EAE3C/E,GAAQwE,MAAMF,QAAUD,EAAQhF,KAAKkF,IAQvCvO,EAAQgP,cAAgB,SAAUhF,EAASsE,GACzC,GAAIC,GAASF,EAAQjF,MAAMY,EAAQwE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIxE,KAAOmF,GACVA,EAAa7I,eAAe0D,UACvByE,GAAOzE,EAIlBE,GAAQwE,MAAMF,QAAUD,EAAQhF,KAAKkF,IAWvCvO,EAAQkP,SAAW,SAAU9B,EAAGC,EAAGC,GACjC,GAAItB,GAAGC,EAAGtF,EAENC,EAAI9B,KAAKgB,MAAU,EAAJsH,GACf+B,EAAQ,EAAJ/B,EAAQxG,EACZ9F,EAAIwM,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQzG,EAAI,GACV,IAAK,GACHoF,EAAIsB,EAAGrB,EAAIoD,EAAG1I,EAAI7F,CAAE,MACtB,KAAK,GACHkL,EAAIoD,EAAGnD,EAAIqB,EAAG3G,EAAI7F,CAAE,MACtB,KAAK,GACHkL,EAAIlL,EAAGmL,EAAIqB,EAAG3G,EAAI0I,CAAE,MACtB,KAAK,GACHrD,EAAIlL,EAAGmL,EAAImD,EAAGzI,EAAI2G,CAAE,MACtB,KAAK,GACHtB,EAAIqD,EAAGpD,EAAInL,EAAG6F,EAAI2G,CAAE,MACtB,KAAK,GACHtB,EAAIsB,EAAGrB,EAAInL,EAAG6F,EAAIyI,EAGtB,OAASpD,EAAGlH,KAAKgB,MAAU,IAAJkG,GAAUC,EAAGnH,KAAKgB,MAAU,IAAJmG,GAAUtF,EAAG7B,KAAKgB,MAAU,IAAJa,KAGzE3G,EAAQyN,SAAW,SAAUL,EAAGC,EAAGC,GACjC,GAAIf,GAAMvM,EAAQkP,SAAS9B,EAAGC,EAAGC,EACjC,OAAOtN,GAAQyM,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAI5F,IAG5C3G,EAAQkN,SAAW,SAAUrB,GAC3B,GAAIU,GAAMvM,EAAQ4L,SAASC,EAC3B,OAAO7L,GAAQ+N,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAI5F,IAG5C3G,EAAQgN,WAAa,SAAUnB,GAC7B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGTtP,EAAQ+M,WAAa,SAAUR,GAC7BA,EAAMA,EAAIR,QAAQ,IAAK,GACvB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAETtP,EAAQwP,YAAc,SAAUC,GAC9BA,EAAOA,EAAK1D,QAAQ,IAAK,GACzB,IAAIuD,GAAO,kDAAkDC,KAAKE,EAClE,OAAOH,IAUTtP,EAAQ0P,sBAAwB,SAAUC,EAAQC,GAChD,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWrI,OAAOsI,OAAOF,GACpBhJ,EAAI,EAAGA,EAAI+I,EAAO7I,OAAQF,IAC7BgJ,EAAgBxJ,eAAeuJ,EAAO/I,KACC,gBAA9BgJ,GAAgBD,EAAO/I,MAChCiJ,EAASF,EAAO/I,IAAM5G,EAAQ+P,aAAaH,EAAgBD,EAAO/I,KAIxE,OAAOiJ,GAEP,MAAO,OAWX7P,EAAQ+P,aAAe,SAAUH,GAC/B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWrI,OAAOsI,OAAOF,EAC7B,KAAK,GAAIhJ,KAAKgJ,GACRA,EAAgBxJ,eAAeQ,IACA,gBAAtBgJ,GAAgBhJ,KACzBiJ,EAASjJ,GAAK5G,EAAQ+P,aAAaH,EAAgBhJ,IAIzD,OAAOiJ,GAEP,MAAO,OAaX7P,EAAQgQ,aAAe,SAAUC,EAAaC,EAAS7E,GACrD,GAAwB7E,SAApB0J,EAAQ7E,GACV,GAA8B,iBAAnB6E,GAAQ7E,GACjB4E,EAAY5E,GAAQ8E,QAAUD,EAAQ7E,OACjC,CACL4E,EAAY5E,GAAQ8E,SAAU,CAC9B,KAAK,GAAIhK,KAAQ+J,GAAQ7E,GACnB6E,EAAQ7E,GAAQjF,eAAeD,KACjC8J,EAAY5E,GAAQlF,GAAQ+J,EAAQ7E,GAAQlF,MAkBtDnG,EAAQoQ,mBAAqB,SAAUC,EAAcC,EAAgBC,EAAOC,GAM1E,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAavJ,OAAS,EAEnB8J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAS/L,KAAKgB,OAAO6K,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBjM,EAAmB4B,SAAXgK,EAAuBM,EAAKP,GAASO,EAAKP,GAAOC,GAEzDO,EAAeT,EAAe1L,EAClC,IAAoB,GAAhBmM,EAEF,MAAOF,EACkB,KAAhBE,EAETJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT1Q,EAAQgR,kBAAoB,SAAUX,EAAcvF,EAAQyF,EAAOU,GAOjE,IANA,GAIIC,GAAWtM,EAAOuM,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAavJ,OAAS,EAGnB8J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAAS/L,KAAKgB,MAAM,IAAO8K,EAAOD,IAClCO,EAAYb,EAAavL,KAAKJ,IAAI,EAAGmM,EAAS,IAAIN,GAClD3L,EAAQyL,EAAaQ,GAAQN,GAC7BY,EAAYd,EAAavL,KAAKL,IAAI4L,EAAavJ,OAAS,EAAG+J,EAAS,IAAIN,GAEpE3L,GAASkG,EAEX,MAAO+F,EACF,IAAgB/F,EAAZoG,GAAsBtM,EAAQkG,EAEvC,MAAyB,UAAlBmG,EAA6BnM,KAAKJ,IAAI,EAAGmM,EAAS,GAAKA,CACzD,IAAY/F,EAARlG,GAAkBuM,EAAYrG,EAEvC,MAAyB,UAAlBmG,EAA6BJ,EAAS/L,KAAKL,IAAI4L,EAAavJ,OAAS,EAAG+J,EAAS,EAG5E/F,GAARlG,EAEF+L,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT1Q,EAAQoR,cAAgB,SAAU/B,EAAGgC,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADAhC,IAAKkC,EAAW,EACR,EAAJlC,EAAcmC,EAAS,EAAInC,EAAIA,EAAIgC,GACvChC,KACQmC,EAAS,GAAKnC,GAAKA,EAAI,GAAK,GAAKgC,IAQ3CrR,EAAQyR,iBAENC,OAAQ,SAAgBrC,GACtB,MAAOA,IAGTsC,WAAY,SAAoBtC,GAC9B,MAAOA,GAAIA,GAGbuC,YAAa,SAAqBvC,GAChC,MAAOA,IAAK,EAAIA,IAGlB+B,cAAe,SAAuB/B,GACpC,MAAW,GAAJA,EAAU,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGlDwC,YAAa,SAAqBxC,GAChC,MAAOA,GAAIA,EAAIA,GAGjByC,aAAc,SAAsBzC,GAClC,QAASA,EAAIA,EAAIA,EAAI,GAGvB0C,eAAgB,SAAwB1C,GACtC,MAAW,GAAJA,EAAU,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGzE2C,YAAa,SAAqB3C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB4C,aAAc,SAAsB5C,GAClC,MAAO,MAAMA,EAAIA,EAAIA,EAAIA,GAG3B6C,eAAgB,SAAwB7C,GACtC,MAAW,GAAJA,EAAU,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,GAG7D8C,YAAa,SAAqB9C,GAChC,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB+C,aAAc,SAAsB/C,GAClC,MAAO,KAAMA,EAAIA,EAAIA,EAAIA,EAAIA,GAG/BgD,eAAgB,SAAwBhD,GACtC,MAAW,GAAJA,EAAU,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAOA,EAAIA,EAAIA,EAAIA,EAAIA,KAMrE,SAASpP,EAAQD,EAASM,GAW9BN,EAAQsS,gBAAkB,SAAUC,GAElC,IAAK,GAAIC,KAAeD,GAClBA,EAAcnM,eAAeoM,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC1S,EAAQ2S,gBAAkB,SAAUJ,GAElC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcnM,eAAeoM,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI7L,GAAI,EAAGA,EAAI2L,EAAcC,GAAaC,UAAU3L,OAAQF,IAC/D2L,EAAcC,GAAaC,UAAU7L,GAAGqE,WAAW1G,YAAYgO,EAAcC,GAAaC,UAAU7L,GAEtG2L,GAAcC,GAAaC,eAgBnCzS,EAAQ4S,cAAgB,SAAUJ,EAAaD,EAAeM,GAC5D,GAAI7I,EAoBJ,OAlBIuI,GAAcnM,eAAeoM,GAG3BD,EAAcC,GAAaC,UAAU3L,OAAS,GAChDkD,EAAUuI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUK,UAGrC9I,EAAU+I,SAASC,gBAAgB,6BAA8BR,GACjEK,EAAaI,YAAYjJ,KAI3BA,EAAU+I,SAASC,gBAAgB,6BAA8BR,GACjED,EAAcC,IAAiBE,QAAUD,cACzCI,EAAaI,YAAYjJ,IAE3BuI,EAAcC,GAAaE,KAAK9K,KAAKoC,GAC9BA,GAaThK,EAAQkT,cAAgB,SAAUV,EAAaD,EAAeY,EAAcC,GAC1E,GAAIpJ,EA4BJ,OA1BIuI,GAAcnM,eAAeoM,GAG3BD,EAAcC,GAAaC,UAAU3L,OAAS,GAChDkD,EAAUuI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUK,UAGrC9I,EAAU+I,SAASM,cAAcb,GACZhM,SAAjB4M,EACFD,EAAaC,aAAapJ,EAASoJ,GAEnCD,EAAaF,YAAYjJ,KAK7BA,EAAU+I,SAASM,cAAcb,GACjCD,EAAcC,IAAiBE,QAAUD,cACpBjM,SAAjB4M,EACFD,EAAaC,aAAapJ,EAASoJ,GAEnCD,EAAaF,YAAYjJ,IAG7BuI,EAAcC,GAAaE,KAAK9K,KAAKoC,GAC9BA,GAgBThK,EAAQsT,UAAY,SAAUC,EAAGC,EAAGC,EAAOlB,EAAeM,EAAca,GACtE,GAAIC,EACkC,WAAlCF,EAAMvD,QAAQ0D,WAAWpF,OAC3BmF,EAAQ3T,EAAQ4S,cAAc,SAAUL,EAAeM,GACvDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMvD,QAAQ0D,WAAWE,QAE/DH,EAAQ3T,EAAQ4S,cAAc,OAAQL,EAAeM,GACrDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAME,EAAMvD,QAAQ0D,WAAWE,MACnEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAMC,EAAMvD,QAAQ0D,WAAWE,MACnEH,EAAME,eAAe,KAAM,QAASJ,EAAMvD,QAAQ0D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMvD,QAAQ0D,WAAWE,OAGxBtN,SAApCiN,EAAMvD,QAAQ0D,WAAWrF,QAC3BoF,EAAME,eAAe,KAAM,QAAS,OAASJ,EAAMA,MAAMvD,QAAQ0D,WAAWrF,QAE9EoF,EAAME,eAAe,KAAM,QAASJ,EAAMvK,UAAY,aAEtD,IAAI6K,GAAQ/T,EAAQ4S,cAAc,OAAQL,EAAeM,EAmBzD,OAlBIa,KACEA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASxK,WACX6K,EAAMF,eAAe,KAAM,QAASH,EAASxK,UAAY,eAG7D6K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUT3T,EAAQoU,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQpL,EAAWqJ,EAAeM,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAOvU,EAAQ4S,cAAc,OAAQL,EAAeM,EACxD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS3K,MAMnC,SAASjJ,EAAQD,EAASM,GAkD9B,QAASW,GAAQuT,EAAMtE,GAerB,IAbIsE,GAASrN,MAAMC,QAAQoN,IAAUzT,EAAKyE,YAAYgP,KACpDtE,EAAUsE,EACVA,EAAO,MAGTpU,KAAKqU,SAAWvE,MAChB9P,KAAKsU,SACLtU,KAAK0G,OAAS,EACd1G,KAAKuU,SAAWvU,KAAKqU,SAASG,SAAW,KACzCxU,KAAKyU,SAIDzU,KAAKqU,SAASzM,KAChB,IAAK,GAAIuI,KAASnQ,MAAKqU,SAASzM,KAC9B,GAAI5H,KAAKqU,SAASzM,KAAK5B,eAAemK,GAAQ,CAC5C,GAAI3L,GAAQxE,KAAKqU,SAASzM,KAAKuI,EAClB,SAAT3L,GAA4B,WAATA,GAA+B,WAATA,EAC3CxE,KAAKyU,MAAMtE,GAAS,OAEpBnQ,KAAKyU,MAAMtE,GAAS3L,EAO5B,GAAIxE,KAAKqU,SAAS1M,QAChB,KAAM,IAAInE,OAAM,sDAGlBxD,MAAK0U,gBAGDN,GACFpU,KAAK2U,IAAIP,GAGXpU,KAAK4U,WAAW9E,GAtFlB,GAAInP,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAiGhCW,GAAQgU,UAAUD,WAAa,SAAU9E,GACnCA,GAA6B1J,SAAlB0J,EAAQgF,QACjBhF,EAAQgF,SAAU,EAEhB9U,KAAK+U,SACP/U,KAAK+U,OAAOC,gBACLhV,MAAK+U,SAIT/U,KAAK+U,SACR/U,KAAK+U,OAAShU,EAAM6F,OAAO5G,MACzB2L,SAAU,MAAO,SAAU,aAIF,gBAAlBmE,GAAQgF,OACjB9U,KAAK+U,OAAOH,WAAW9E,EAAQgF,UAevCjU,EAAQgU,UAAUI,GAAK,SAAU3K,EAAOhB,GACtC,GAAI4L,GAAclV,KAAK0U,aAAapK,EAC/B4K,KACHA,KACAlV,KAAK0U,aAAapK,GAAS4K,GAG7BA,EAAY1N,MACV8B,SAAUA,KAKdzI,EAAQgU,UAAUM,UAAYtU,EAAQgU,UAAUI,GAOhDpU,EAAQgU,UAAUO,IAAM,SAAU9K,EAAOhB,GACvC,GAAI4L,GAAclV,KAAK0U,aAAapK,EAChC4K,KACFlV,KAAK0U,aAAapK,GAAS4K,EAAYG,OAAO,SAAUvL,GACtD,MAAOA,GAASR,UAAYA,MAMlCzI,EAAQgU,UAAUS,YAAczU,EAAQgU,UAAUO,IASlDvU,EAAQgU,UAAUU,SAAW,SAAUjL,EAAOkL,EAAQC,GACpD,GAAa,KAATnL,EACF,KAAM,IAAI9G,OAAM,yBAGlB,IAAI0R,KACA5K,KAAStK,MAAK0U,eAChBQ,EAAcA,EAAYQ,OAAO1V,KAAK0U,aAAapK,KAEjD,KAAOtK,MAAK0U,eACdQ,EAAcA,EAAYQ,OAAO1V,KAAK0U,aAAa,MAGrD,KAAK,GAAIlO,GAAI,EAAGA,EAAI0O,EAAYxO,OAAQF,IAAK,CAC3C,GAAImP,GAAaT,EAAY1O,EACzBmP,GAAWrM,UACbqM,EAAWrM,SAASgB,EAAOkL,EAAQC,GAAY,QAYrD5U,EAAQgU,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIpV,GADAuV,KAEAC,EAAK7V,IAET,IAAI+G,MAAMC,QAAQoN,GAEhB,IAAK,GAAI5N,GAAI,EAAGkB,EAAM0M,EAAK1N,OAAYgB,EAAJlB,EAASA,IAC1CnG,EAAKwV,EAAGC,SAAS1B,EAAK5N,IACtBoP,EAASpO,KAAKnH,OAEX,IAAIM,EAAKyE,YAAYgP,GAG1B,IAAK,GADD2B,GAAU/V,KAAKgW,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDvF,MACK0F,EAAM,EAAGC,EAAON,EAAQrP,OAAc2P,EAAND,EAAYA,IAAO,CAC1D,GAAIjG,GAAQ4F,EAAQK,EACpB1F,GAAKP,GAASiE,EAAKkC,SAASL,EAAKG,GAGnC/V,EAAKwV,EAAGC,SAASpF,GACjBkF,EAASpO,KAAKnH,OAEX,CAAA,KAAI+T,YAAgBhN,SAKzB,KAAM,IAAI5D,OAAM,mBAHhBnD,GAAKwV,EAAGC,SAAS1B,GACjBwB,EAASpO,KAAKnH,GAShB,MAJIuV,GAASlP,QACX1G,KAAKuV,SAAS,OAAStT,MAAO2T,GAAYH,GAGrCG,GAST/U,EAAQgU,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAK7V,KACLwU,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAqBhG,GACrC,GAAIrQ,GAAKqQ,EAAK8D,EACVqB,GAAGvB,MAAMjU,IAEXA,EAAKwV,EAAGc,YAAYjG,GACpB8F,EAAWhP,KAAKnH,GAChBoW,EAAYjP,KAAKkJ,KAGjBrQ,EAAKwV,EAAGC,SAASpF,GACjBkF,EAASpO,KAAKnH,IAIlB,IAAI0G,MAAMC,QAAQoN,GAEhB,IAAK,GAAI5N,GAAI,EAAGkB,EAAM0M,EAAK1N,OAAYgB,EAAJlB,EAASA,IAC1CkQ,EAAYtC,EAAK5N,QAEd,IAAI7F,EAAKyE,YAAYgP,GAG1B,IAAK,GADD2B,GAAU/V,KAAKgW,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDvF,MACK0F,EAAM,EAAGC,EAAON,EAAQrP,OAAc2P,EAAND,EAAYA,IAAO,CAC1D,GAAIjG,GAAQ4F,EAAQK,EACpB1F,GAAKP,GAASiE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYhG,OAET,CAAA,KAAI0D,YAAgBhN,SAIzB,KAAM,IAAI5D,OAAM,mBAFhBkT,GAAYtC,GAYd,MAPIwB,GAASlP,QACX1G,KAAKuV,SAAS,OAAStT,MAAO2T,GAAYH,GAExCe,EAAW9P,QACb1G,KAAKuV,SAAS,UAAYtT,MAAOuU,EAAYpC,KAAMqC,GAAehB,GAG7DG,EAASF,OAAOc,IAsCzB3V,EAAQgU,UAAU+B,IAAM,SAAUC,GAChC,GAGIxW,GAAIyW,EAAKhH,EAASsE,EAHlByB,EAAK7V,KAIL+W,EAAYpW,EAAKsH,QAAQxB,UAAU,GACtB,WAAbsQ,GAAsC,UAAbA,GAE3B1W,EAAKoG,UAAU,GACfqJ,EAAUrJ,UAAU,GACpB2N,EAAO3N,UAAU,IACK,SAAbsQ,GAETD,EAAMrQ,UAAU,GAChBqJ,EAAUrJ,UAAU,GACpB2N,EAAO3N,UAAU,KAGjBqJ,EAAUrJ,UAAU,GACpB2N,EAAO3N,UAAU,GAInB,IAAIuQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAc1P,QAAQuI,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E5C,GAAQ4C,GAAcrW,EAAKsH,QAAQmM,GACrC,KAAM,IAAI5Q,OAAM,6BAA+B7C,EAAKsH,QAAQmM,GAAQ,sDAA6DtE,EAAQlI,KAAO,IAElJ,IAAkB,aAAdoP,IAA8BrW,EAAKyE,YAAYgP,GACjD,KAAM,IAAI5Q,OAAM,6EAGlBwT,GADS5C,GAC0B,aAAtBzT,EAAKsH,QAAQmM,GAAuB,YAEpC,OAIf,IAGI1D,GACAwG,EACA1Q,EACAkB,EANAE,EAAOkI,GAAWA,EAAQlI,MAAQ5H,KAAKqU,SAASzM,KAChDyN,EAASvF,GAAWA,EAAQuF,OAC5BpT,IAOJ,IAAUmE,QAAN/F,EAEFqQ,EAAOmF,EAAGsB,SAAS9W,EAAIuH,GACnByN,IAAWA,EAAO3E,KACpBA,EAAO,UAEJ,IAAWtK,QAAP0Q,EAET,IAAKtQ,EAAI,EAAGkB,EAAMoP,EAAIpQ,OAAYgB,EAAJlB,EAASA,IACrCkK,EAAOmF,EAAGsB,SAASL,EAAItQ,GAAIoB,KACtByN,GAAUA,EAAO3E,KACpBzO,EAAMuF,KAAKkJ,OAKf,KAAKwG,IAAUlX,MAAKsU,MACdtU,KAAKsU,MAAMtO,eAAekR,KAC5BxG,EAAOmF,EAAGsB,SAASD,EAAQtP,KACtByN,GAAUA,EAAO3E,KACpBzO,EAAMuF,KAAKkJ,GAYnB,IALIZ,GAAWA,EAAQsH,OAAehR,QAAN/F,GAC9BL,KAAKqX,MAAMpV,EAAO6N,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAUnJ,QAAN/F,EACFqQ,EAAO1Q,KAAKsX,cAAc5G,EAAMnB,OAEhC,KAAK/I,EAAI,EAAGkB,EAAMzF,EAAMyE,OAAYgB,EAAJlB,EAASA,IACvCvE,EAAMuE,GAAKxG,KAAKsX,cAAcrV,EAAMuE,GAAI+I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIjB,GAAU/V,KAAKgW,gBAAgB5B,EACnC,IAAUhO,QAAN/F,EAEFwV,EAAG0B,WAAWnD,EAAM2B,EAASrF,OAG7B,KAAKlK,EAAI,EAAGA,EAAIvE,EAAMyE,OAAQF,IAC5BqP,EAAG0B,WAAWnD,EAAM2B,EAAS9T,EAAMuE,GAGvC,OAAO4N,GACF,GAAkB,UAAd4C,EAAwB,CACjC,GAAIlL,KACJ,KAAKtF,EAAI,EAAGA,EAAIvE,EAAMyE,OAAQF,IAC5BsF,EAAO7J,EAAMuE,GAAGnG,IAAM4B,EAAMuE,EAE9B,OAAOsF,GAGP,GAAU1F,QAAN/F,EAEF,MAAOqQ,EAGP,IAAI0D,EAAM,CAER,IAAK5N,EAAI,EAAGkB,EAAMzF,EAAMyE,OAAYgB,EAAJlB,EAASA,IACvC4N,EAAK5M,KAAKvF,EAAMuE,GAElB,OAAO4N,GAGP,MAAOnS,IAcfpB,EAAQgU,UAAU2C,OAAS,SAAU1H,GACnC,GAIItJ,GACAkB,EACArH,EACAqQ,EACAzO,EARAmS,EAAOpU,KAAKsU,MACZe,EAASvF,GAAWA,EAAQuF,OAC5B+B,EAAQtH,GAAWA,EAAQsH,MAC3BxP,EAAOkI,GAAWA,EAAQlI,MAAQ5H,KAAKqU,SAASzM,KAMhDkP,IAEJ,IAAIzB,EAEF,GAAI+B,EAAO,CAETnV,IACA,KAAK5B,IAAM+T,GACLA,EAAKpO,eAAe3F,KACtBqQ,EAAO1Q,KAAKmX,SAAS9W,EAAIuH,GACrByN,EAAO3E,IACTzO,EAAMuF,KAAKkJ,GAOjB,KAFA1Q,KAAKqX,MAAMpV,EAAOmV,GAEb5Q,EAAI,EAAGkB,EAAMzF,EAAMyE,OAAYgB,EAAJlB,EAASA,IACvCsQ,EAAItQ,GAAKvE,EAAMuE,GAAGxG,KAAKuU,cAIzB,KAAKlU,IAAM+T,GACLA,EAAKpO,eAAe3F,KACtBqQ,EAAO1Q,KAAKmX,SAAS9W,EAAIuH,GACrByN,EAAO3E,IACToG,EAAItP,KAAKkJ,EAAK1Q,KAAKuU,gBAO3B,IAAI6C,EAAO,CAETnV,IACA,KAAK5B,IAAM+T,GACLA,EAAKpO,eAAe3F,IACtB4B,EAAMuF,KAAK4M,EAAK/T,GAMpB,KAFAL,KAAKqX,MAAMpV,EAAOmV,GAEb5Q,EAAI,EAAGkB,EAAMzF,EAAMyE,OAAYgB,EAAJlB,EAASA,IACvCsQ,EAAItQ,GAAKvE,EAAMuE,GAAGxG,KAAKuU,cAIzB,KAAKlU,IAAM+T,GACLA,EAAKpO,eAAe3F,KACtBqQ,EAAO0D,EAAK/T,GACZyW,EAAItP,KAAKkJ,EAAK1Q,KAAKuU,WAM3B,OAAOuC,IAOTjW,EAAQgU,UAAU4C,WAAa,WAC7B,MAAOzX,OAaTa,EAAQgU,UAAUxL,QAAU,SAAUC,EAAUwG,GAC9C,GAGIY,GACArQ,EAJAgV,EAASvF,GAAWA,EAAQuF,OAC5BzN,EAAOkI,GAAWA,EAAQlI,MAAQ5H,KAAKqU,SAASzM,KAChDwM,EAAOpU,KAAKsU,KAIhB,IAAIxE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDnV,GAAQjC,KAAK4W,IAAI9G,GAEZtJ,EAAI,EAAGkB,EAAMzF,EAAMyE,OAAYgB,EAAJlB,EAASA,IAC3CkK,EAAOzO,EAAMuE,GACbnG,EAAKqQ,EAAK1Q,KAAKuU,UACfjL,EAASoH,EAAMrQ,OAIjB,KAAKA,IAAM+T,GACLA,EAAKpO,eAAe3F,KACtBqQ,EAAO1Q,KAAKmX,SAAS9W,EAAIuH,KACpByN,GAAUA,EAAO3E,KACpBpH,EAASoH,EAAMrQ,KAkBzBQ,EAAQgU,UAAUrG,IAAM,SAAUlF,EAAUwG,GAC1C,GAIIY,GAJA2E,EAASvF,GAAWA,EAAQuF,OAC5BzN,EAAOkI,GAAWA,EAAQlI,MAAQ5H,KAAKqU,SAASzM,KAChD8P,KACAtD,EAAOpU,KAAKsU,KAIhB,KAAK,GAAIjU,KAAM+T,GACTA,EAAKpO,eAAe3F,KACtBqQ,EAAO1Q,KAAKmX,SAAS9W,EAAIuH,KACpByN,GAAUA,EAAO3E,KACpBgH,EAAYlQ,KAAK8B,EAASoH,EAAMrQ,IAUtC,OAJIyP,IAAWA,EAAQsH,OACrBpX,KAAKqX,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUT7W,EAAQgU,UAAUyC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EAEH,MAAOA,EAGT,IAAIiH,KAEJ,IAAI5Q,MAAMC,QAAQuI,GAChB,IAAK,GAAIY,KAASO,GACZA,EAAK1K,eAAemK,IAAmC,IAAzBZ,EAAOhI,QAAQ4I,KAC/CwH,EAAaxH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK1K,eAAemK,IAAUZ,EAAOvJ,eAAemK,KACtDwH,EAAapI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOwH,IAST9W,EAAQgU,UAAUwC,MAAQ,SAAUpV,EAAOmV,GACzC,GAAIzW,EAAKgE,SAASyS,GAAQ,CAExB,GAAIQ,GAAOR,CACXnV,GAAM4V,KAAK,SAAUvR,EAAGC,GACtB,GAAIuR,GAAKxR,EAAEsR,GACPG,EAAKxR,EAAEqR,EACX,OAAOE,GAAKC,EAAK,EAASA,EAALD,EAAU,GAAK,QAEjC,CAAA,GAAqB,kBAAVV,GAOhB,KAAM,IAAIlQ,WAAU,uCALpBjF,GAAM4V,KAAKT,KAgBfvW,EAAQgU,UAAUmD,OAAS,SAAU3X,EAAIoV,GACvC,GACIjP,GACAkB,EACAuQ,EAHAC,IAKJ,IAAInR,MAAMC,QAAQ3G,GAChB,IAAKmG,EAAI,EAAGkB,EAAMrH,EAAGqG,OAAYgB,EAAJlB,EAASA,IACpCyR,EAAYjY,KAAKmY,QAAQ9X,EAAGmG,IACX,MAAbyR,GACFC,EAAW1Q,KAAKyQ,OAIpBA,GAAYjY,KAAKmY,QAAQ9X,GACR,MAAb4X,GACFC,EAAW1Q,KAAKyQ,EAQpB,OAJIC,GAAWxR,QACb1G,KAAKuV,SAAS,UAAYtT,MAAOiW,GAAczC,GAG1CyC,GASTrX,EAAQgU,UAAUsD,QAAU,SAAU9X,GACpC,GAAIM,EAAKiD,SAASvD,IAAOM,EAAKgE,SAAStE,IACrC,GAAIL,KAAKsU,MAAMjU,GAGb,aAFOL,MAAKsU,MAAMjU,GAClBL,KAAK0G,SACErG,MAEJ,IAAIA,YAAc+G,QAAQ,CAC/B,GAAI8P,GAAS7W,EAAGL,KAAKuU,SACrB,IAAI2C,GAAUlX,KAAKsU,MAAM4C,GAGvB,aAFOlX,MAAKsU,MAAM4C,GAClBlX,KAAK0G,SACEwQ,EAGX,MAAO,OAQTrW,EAAQgU,UAAUuD,MAAQ,SAAU3C,GAClC,GAAIqB,GAAM1P,OAAOmH,KAAKvO,KAAKsU,MAO3B,OALAtU,MAAKsU,SACLtU,KAAK0G,OAAS,EAEd1G,KAAKuV,SAAS,UAAYtT,MAAO6U,GAAOrB,GAEjCqB,GAQTjW,EAAQgU,UAAUvQ,IAAM,SAAU6L,GAChC,GAAIiE,GAAOpU,KAAKsU,MACZhQ,EAAM,KACN+T,EAAW,IAEf,KAAK,GAAIhY,KAAM+T,GACb,GAAIA,EAAKpO,eAAe3F,GAAK,CAC3B,GAAIqQ,GAAO0D,EAAK/T,GACZiY,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBhU,GAAOgU,EAAYD,KAC5C/T,EAAMoM,EACN2H,EAAWC,GAKjB,MAAOhU,IAQTzD,EAAQgU,UAAUxQ,IAAM,SAAU8L,GAChC,GAAIiE,GAAOpU,KAAKsU,MACZjQ,EAAM,KACNkU,EAAW,IAEf,KAAK,GAAIlY,KAAM+T,GACb,GAAIA,EAAKpO,eAAe3F,GAAK,CAC3B,GAAIqQ,GAAO0D,EAAK/T,GACZiY,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBjU,GAAmBkU,EAAZD,KAChCjU,EAAMqM,EACN6H,EAAWD,GAKjB,MAAOjU,IAUTxD,EAAQgU,UAAU2D,SAAW,SAAUrI,GACrC,GAII3J,GAJA4N,EAAOpU,KAAKsU,MACZmE,KACAC,EAAY1Y,KAAKqU,SAASzM,MAAQ5H,KAAKqU,SAASzM,KAAKuI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI5S,KAAQqO,GACf,GAAIA,EAAKpO,eAAeD,GAAO,CAC7B,GAAI2K,GAAO0D,EAAKrO,GACZvB,EAAQkM,EAAKP,GACbyI,GAAS,CACb,KAAKpS,EAAI,EAAOmS,EAAJnS,EAAWA,IACrB,GAAIiS,EAAOjS,IAAMhC,EAAO,CACtBoU,GAAS,CACT,OAGCA,GAAoBxS,SAAV5B,IACbiU,EAAOE,GAASnU,EAChBmU,KAKN,GAAID,EACF,IAAKlS,EAAI,EAAGA,EAAIiS,EAAO/R,OAAQF,IAC7BiS,EAAOjS,GAAK7F,EAAKgH,QAAQ8Q,EAAOjS,GAAIkS,EAIxC,OAAOD,IAST5X,EAAQgU,UAAUiB,SAAW,SAAUpF,GACrC,GAAIrQ,GAAKqQ,EAAK1Q,KAAKuU,SAEnB,IAAUnO,QAAN/F,GAEF,GAAIL,KAAKsU,MAAMjU,GAEb,KAAM,IAAImD,OAAM,iCAAmCnD,EAAK,uBAI1DA,GAAKM,EAAK6E,aACVkL,EAAK1Q,KAAKuU,UAAYlU,CAGxB,IAAIyN,KACJ,KAAK,GAAIqC,KAASO,GAChB,GAAIA,EAAK1K,eAAemK,GAAQ,CAC9B,GAAIuI,GAAY1Y,KAAKyU,MAAMtE,EAC3BrC,GAAEqC,GAASxP,EAAKgH,QAAQ+I,EAAKP,GAAQuI,GAMzC,MAHA1Y,MAAKsU,MAAMjU,GAAMyN,EACjB9N,KAAK0G,SAEErG,GAUTQ,EAAQgU,UAAUsC,SAAW,SAAU9W,EAAIwY,GACzC,GAAI1I,GAAO3L,EAGPsU,EAAM9Y,KAAKsU,MAAMjU,EACrB,KAAKyY,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI9S,eAAemK,KACrB3L,EAAQsU,EAAI3I,GACZ4I,EAAU5I,GAASxP,EAAKgH,QAAQnD,EAAOqU,EAAM1I,SAKjD,KAAKA,IAAS2I,GACRA,EAAI9S,eAAemK,KACrB3L,EAAQsU,EAAI3I,GACZ4I,EAAU5I,GAAS3L,EAIzB,OAAOuU,IAWTlY,EAAQgU,UAAU8B,YAAc,SAAUjG,GACxC,GAAIrQ,GAAKqQ,EAAK1Q,KAAKuU,SACnB,IAAUnO,QAAN/F,EACF,KAAM,IAAImD,OAAM,6CAA+CwV,KAAKC,UAAUvI,GAAQ,IAExF,IAAI5C,GAAI9N,KAAKsU,MAAMjU,EACnB,KAAKyN,EAEH,KAAM,IAAItK,OAAM,uCAAyCnD,EAAK,SAIhE,KAAK,GAAI8P,KAASO,GAChB,GAAIA,EAAK1K,eAAemK,GAAQ,CAC9B,GAAIuI,GAAY1Y,KAAKyU,MAAMtE,EAC3BrC,GAAEqC,GAASxP,EAAKgH,QAAQ+I,EAAKP,GAAQuI,GAIzC,MAAOrY,IASTQ,EAAQgU,UAAUmB,gBAAkB,SAAUkD,GAE5C,IAAK,GADDnD,MACKK,EAAM,EAAGC,EAAO6C,EAAUC,qBAA4B9C,EAAND,EAAYA,IACnEL,EAAQK,GAAO8C,EAAUE,YAAYhD,IAAQ8C,EAAUG,eAAejD,EAExE,OAAOL,IAUTlV,EAAQgU,UAAU0C,WAAa,SAAU2B,EAAWnD,EAASrF,GAG3D,IAAK,GAFDuF,GAAMiD,EAAUI,SAEXlD,EAAM,EAAGC,EAAON,EAAQrP,OAAc2P,EAAND,EAAYA,IAAO,CAC1D,GAAIjG,GAAQ4F,EAAQK,EACpB8C,GAAUK,SAAStD,EAAKG,EAAK1F,EAAKP,MAItCtQ,EAAOD,QAAUiB,GAIb,SAAShB,EAAQD,EAASM,GAiB9B,QAASY,GAASsT,EAAMtE,GACtB9P,KAAKsU,MAAQ,KACbtU,KAAKwZ,QACLxZ,KAAK0G,OAAS,EACd1G,KAAKqU,SAAWvE,MAChB9P,KAAKuU,SAAW,KAChBvU,KAAK0U,eAEL,IAAImB,GAAK7V,IACTA,MAAK8J,SAAW,WACd+L,EAAG4D,SAASC,MAAM7D,EAAIpP,YAGxBzG,KAAK2Z,QAAQvF,GA1Bf,GAAIzT,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAAS+T,UAAU8E,QAAU,SAAUvF,GACrC,GAAI0C,GAAKtQ,EAAGkB,CAEZ,IAAI1H,KAAKsU,MAAO,CAEVtU,KAAKsU,MAAMgB,aACbtV,KAAKsU,MAAMgB,YAAY,IAAKtV,KAAK8J,UAInCgN,IACA,KAAK,GAAIzW,KAAML,MAAKwZ,KACdxZ,KAAKwZ,KAAKxT,eAAe3F,IAC3ByW,EAAItP,KAAKnH,EAGbL,MAAKwZ,QACLxZ,KAAK0G,OAAS,EACd1G,KAAKuV,SAAS,UAAYtT,MAAO6U,IAKnC,GAFA9W,KAAKsU,MAAQF,EAETpU,KAAKsU,MAAO,CAMd,IAJAtU,KAAKuU,SAAWvU,KAAKqU,SAASG,SAAWxU,KAAKsU,OAAStU,KAAKsU,MAAMxE,SAAW9P,KAAKsU,MAAMxE,QAAQ0E,SAAW,KAG3GsC,EAAM9W,KAAKsU,MAAMkD,QAASnC,OAAQrV,KAAKqU,UAAYrU,KAAKqU,SAASgB,SAC5D7O,EAAI,EAAGkB,EAAMoP,EAAIpQ,OAAYgB,EAAJlB,EAASA,IACrCnG,EAAKyW,EAAItQ,GACTxG,KAAKwZ,KAAKnZ,IAAM,CAElBL,MAAK0G,OAASoQ,EAAIpQ,OAClB1G,KAAKuV,SAAS,OAAStT,MAAO6U,IAG1B9W,KAAKsU,MAAMW,IACbjV,KAAKsU,MAAMW,GAAG,IAAKjV,KAAK8J,YAS9BhJ,EAAS+T,UAAU+E,QAAU,WAQ3B,IAAK,GAPDvZ,GACAyW,EAAM9W,KAAKsU,MAAMkD,QAASnC,OAAQrV,KAAKqU,UAAYrU,KAAKqU,SAASgB,SACjEwE,KACAC,KACAC,KAGKvT,EAAI,EAAGA,EAAIsQ,EAAIpQ,OAAQF,IAC9BnG,EAAKyW,EAAItQ,GACTqT,EAAOxZ,IAAM,EACRL,KAAKwZ,KAAKnZ,KACbyZ,EAAMtS,KAAKnH,GACXL,KAAKwZ,KAAKnZ,IAAM,EAChBL,KAAK0G,SAKT,KAAKrG,IAAML,MAAKwZ,KACVxZ,KAAKwZ,KAAKxT,eAAe3F,KACtBwZ,EAAOxZ,KACV0Z,EAAQvS,KAAKnH,SACNL,MAAKwZ,KAAKnZ,GACjBL,KAAK0G,UAMPoT,GAAMpT,QACR1G,KAAKuV,SAAS,OAAStT,MAAO6X,IAE5BC,EAAQrT,QACV1G,KAAKuV,SAAS,UAAYtT,MAAO8X,KAsCrCjZ,EAAS+T,UAAU+B,IAAM,SAAUC,GACjC,GAGIC,GAAKhH,EAASsE,EAHdyB,EAAK7V,KAIL+W,EAAYpW,EAAKsH,QAAQxB,UAAU,GACtB,WAAbsQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMrQ,UAAU,GAChBqJ,EAAUrJ,UAAU,GACpB2N,EAAO3N,UAAU,KAGjBqJ,EAAUrJ,UAAU,GACpB2N,EAAO3N,UAAU,GAInB,IAAIuT,GAAcrZ,EAAKiG,UAAW5G,KAAKqU,SAAUvE,EAG7C9P,MAAKqU,SAASgB,QAAUvF,GAAWA,EAAQuF,SAC7C2E,EAAY3E,OAAS,SAAU3E,GAC7B,MAAOmF,GAAGxB,SAASgB,OAAO3E,IAASZ,EAAQuF,OAAO3E,IAKtD,IAAIuJ,KAOJ,OANW7T,SAAP0Q,GACFmD,EAAazS,KAAKsP,GAEpBmD,EAAazS,KAAKwS,GAClBC,EAAazS,KAAK4M,GAEXpU,KAAKsU,OAAStU,KAAKsU,MAAMsC,IAAI8C,MAAM1Z,KAAKsU,MAAO2F,IAWxDnZ,EAAS+T,UAAU2C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAI9W,KAAKsU,MAAO,CACd,GACIe,GADA6E,EAAgBla,KAAKqU,SAASgB,MAK9BA,GAFAvF,GAAWA,EAAQuF,OACjB6E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQuF,OAAO3E,IAGtCZ,EAAQuF,OAGV6E,EAGXpD,EAAM9W,KAAKsU,MAAMkD,QACfnC,OAAQA,EACR+B,MAAOtH,GAAWA,EAAQsH,YAG5BN,KAGF,OAAOA,IAQThW,EAAS+T,UAAU4C,WAAa,WAE9B,IADA,GAAI0C,GAAUna,KACPma,YAAmBrZ,IACxBqZ,EAAUA,EAAQ7F,KAEpB,OAAO6F,IAAW,MAYpBrZ,EAAS+T,UAAU4E,SAAW,SAAUnP,EAAOkL,EAAQC,GACrD,GAAIjP,GAAGkB,EAAKrH,EAAIqQ,EACZoG,EAAMtB,GAAUA,EAAOvT,MACvBmS,EAAOpU,KAAKsU,MACZmC,KACAqD,KACAM,KACAL,IAEJ,IAAIjD,GAAO1C,EAAM,CACf,OAAQ9J,GACN,IAAK,MAEH,IAAK9D,EAAI,EAAGkB,EAAMoP,EAAIpQ,OAAYgB,EAAJlB,EAASA,IACrCnG,EAAKyW,EAAItQ,GACTkK,EAAO1Q,KAAK4W,IAAIvW,GACZqQ,IACF1Q,KAAKwZ,KAAKnZ,IAAM,EAChByZ,EAAMtS,KAAKnH,GAIf,MAEF,KAAK,SAGH,IAAKmG,EAAI,EAAGkB,EAAMoP,EAAIpQ,OAAYgB,EAAJlB,EAASA,IACrCnG,EAAKyW,EAAItQ,GACTkK,EAAO1Q,KAAK4W,IAAIvW,GAEZqQ,EACE1Q,KAAKwZ,KAAKnZ,IACZ+Z,EAAQ5S,KAAKnH,GACboW,EAAYjP,KAAKgO,EAAOpB,KAAK5N,MAE7BxG,KAAKwZ,KAAKnZ,IAAM,EAChByZ,EAAMtS,KAAKnH,IAGTL,KAAKwZ,KAAKnZ,WACLL,MAAKwZ,KAAKnZ,GACjB0Z,EAAQvS,KAAKnH,GAKnB,MAEF,KAAK,SAEH,IAAKmG,EAAI,EAAGkB,EAAMoP,EAAIpQ,OAAYgB,EAAJlB,EAASA,IACrCnG,EAAKyW,EAAItQ,GACLxG,KAAKwZ,KAAKnZ,WACLL,MAAKwZ,KAAKnZ,GACjB0Z,EAAQvS,KAAKnH,IAOrBL,KAAK0G,QAAUoT,EAAMpT,OAASqT,EAAQrT,OAElCoT,EAAMpT,QACR1G,KAAKuV,SAAS,OAAStT,MAAO6X,GAASrE,GAErC2E,EAAQ1T,QACV1G,KAAKuV,SAAS,UAAYtT,MAAOmY,EAAShG,KAAMqC,GAAehB,GAE7DsE,EAAQrT,QACV1G,KAAKuV,SAAS,UAAYtT,MAAO8X,GAAWtE,KAMlD3U,EAAS+T,UAAUI,GAAKpU,EAAQgU,UAAUI,GAC1CnU,EAAS+T,UAAUO,IAAMvU,EAAQgU,UAAUO,IAC3CtU,EAAS+T,UAAUU,SAAW1U,EAAQgU,UAAUU,SAGhDzU,EAAS+T,UAAUM,UAAYrU,EAAS+T,UAAUI,GAClDnU,EAAS+T,UAAUS,YAAcxU,EAAS+T,UAAUO,IAEpDvV,EAAOD,QAAUkB,GAMb,SAASjB,EAAQD,EAASM,GAiB9B,QAASa,GAAM+O,GAEb9P,KAAKqa,MAAQ,KACbra,KAAKsE,IAAMgW,EAAAA,EAGXta,KAAK+U,UACL/U,KAAKua,SAAW,KAChBva,KAAKwa,UAAY,KAEjBxa,KAAK4U,WAAW9E,GAgBlB/O,EAAM8T,UAAUD,WAAa,SAAU9E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5Bra,KAAKqa,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQxL,MAC5BtE,KAAKsE,IAAMwL,EAAQxL,KAGrBtE,KAAKya,kBAsBP1Z,EAAM6F,OAAS,SAAU/C,EAAQiM,GAC/B,GAAIgF,GAAQ,GAAI/T,GAAM+O,EAEtB,IAAqB1J,SAAjBvC,EAAO6W,MACT,KAAM,IAAIlX,OAAM,6CAElBK,GAAO6W,MAAQ,WACb5F,EAAM4F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUxU,QAGZ,IAAI0J,GAAWA,EAAQnE,QACrB,IAAK,GAAInF,GAAI,EAAGA,EAAIsJ,EAAQnE,QAAQjF,OAAQF,IAAK,CAC/C,GAAIoR,GAAO9H,EAAQnE,QAAQnF,EAC3BmU,GAAQnT,MACNoQ,KAAMA,EACNgD,SAAU/W,EAAO+T,KAEnB9C,EAAMnJ,QAAQ9H,EAAQ+T,GAS1B,MALA9C,GAAM0F,WACJ3W,OAAQA,EACR8W,QAASA,GAGJ7F,GAOT/T,EAAM8T,UAAUG,QAAU,WAGxB,GAFAhV,KAAK0a,QAED1a,KAAKwa,UAAW,CAGlB,IAAK,GAFD3W,GAAS7D,KAAKwa,UAAU3W,OACxB8W,EAAU3a,KAAKwa,UAAUG,QACpBnU,EAAI,EAAGA,EAAImU,EAAQjU,OAAQF,IAAK,CACvC,GAAIqU,GAASF,EAAQnU,EACjBqU,GAAOD,SACT/W,EAAOgX,EAAOjD,MAAQiD,EAAOD,eAEtB/W,GAAOgX,EAAOjD,MAGzB5X,KAAKwa,UAAY,OASrBzZ,EAAM8T,UAAUlJ,QAAU,SAAU9H,EAAQgX,GAC1C,GAAIhF,GAAK7V,KACL4a,EAAW/W,EAAOgX,EACtB,KAAKD,EACH,KAAM,IAAIpX,OAAM,UAAYqX,EAAS,aAGvChX,GAAOgX,GAAU,WAGf,IAAK,GADDhE,MACKrQ,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IACpCqQ,EAAKrQ,GAAKC,UAAUD,EAItBqP,GAAGf,OACD+B,KAAMA,EACNiE,GAAIF,EACJG,QAAS/a,SASfe,EAAM8T,UAAUC,MAAQ,SAAUkG,GAE9Bhb,KAAK+U,OAAOvN,KADO,kBAAVwT,IACUF,GAAIE,GAENA,GAGnBhb,KAAKya,kBAOP1Z,EAAM8T,UAAU4F,eAAiB,WAQ/B,GANIza,KAAK+U,OAAOrO,OAAS1G,KAAKsE,KAC5BtE,KAAK0a,QAIPO,aAAajb,KAAKua,UACdva,KAAK8U,MAAMpO,OAAS,GAA2B,gBAAf1G,MAAKqa,MAAoB,CAC3D,GAAIxE,GAAK7V,IACTA,MAAKua,SAAWW,WAAW,WACzBrF,EAAG6E,SACF1a,KAAKqa,SAOZtZ,EAAM8T,UAAU6F,MAAQ,WACtB,KAAO1a,KAAK+U,OAAOrO,OAAS,GAAG,CAC7B,GAAIsU,GAAQhb,KAAK+U,OAAOrC,OACxBsI,GAAMF,GAAGpB,MAAMsB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMnE,YAIpDhX,EAAOD,QAAUmB,GAIb,SAASlB,EAAQD,EAASM,GA0B9B,QAASc,GAAQma,EAAW/G,EAAMtE,GAChC,KAAM9P,eAAgBgB,IACpB,KAAM,IAAIoa,aAAY,mDAIxBpb,MAAKqb,iBAAmBF,EACxBnb,KAAKiU,MAAQ,QACbjU,KAAKkU,OAAS,QACdlU,KAAKsb,OAAS,GACdtb,KAAKub,eAAiB,MACtBvb,KAAKwb,eAAiB,MAEtBxb,KAAKyb,OAAS,IACdzb,KAAK0b,OAAS,IACd1b,KAAK2b,OAAS,GAEd,IAAIC,GAAc,SAAqB1O,GACrC,MAAOA,GAETlN,MAAK6b,YAAcD,EACnB5b,KAAK8b,YAAcF,EACnB5b,KAAK+b,YAAcH,EAEnB5b,KAAKgc,YAAc,OACnBhc,KAAKic,YAAc,QAEnBjc,KAAKoO,MAAQpN,EAAQkb,MAAMC,IAC3Bnc,KAAKoc,iBAAkB,EACvBpc,KAAKqc,UAAW,EAChBrc,KAAKsc,iBAAkB,EACvBtc,KAAKuc,YAAa,EAClBvc,KAAKwc,gBAAiB,EACtBxc,KAAKyc,aAAc,EACnBzc,KAAK0c,cAAgB,GAErB1c,KAAK2c,kBAAoB,IACzB3c,KAAK4c,kBAAmB,EAExB5c,KAAK6c,OAAS,GAAI3b,GAClBlB,KAAK8c,IAAM,GAAIzb,GAAQ,EAAG,EAAG,IAE7BrB,KAAKkZ,UAAY,KACjBlZ,KAAK+c,WAAa,KAGlB/c,KAAKgd,KAAO5W,OACZpG,KAAKid,KAAO7W,OACZpG,KAAKkd,KAAO9W,OACZpG,KAAKmd,SAAW/W,OAChBpG,KAAKod,UAAYhX,OAEjBpG,KAAKqd,KAAO,EACZrd,KAAKsd,MAAQlX,OACbpG,KAAKud,KAAO,EACZvd,KAAKwd,KAAO,EACZxd,KAAKyd,MAAQrX,OACbpG,KAAK0d,KAAO,EACZ1d,KAAK2d,KAAO,EACZ3d,KAAK4d,MAAQxX,OACbpG,KAAK6d,KAAO,EACZ7d,KAAK8d,SAAW,EAChB9d,KAAK+d,SAAW,EAChB/d,KAAKge,UAAY,EACjBhe,KAAKie,UAAY,EAIjBje,KAAKke,UAAY,UACjBle,KAAKme,UAAY,UACjBne,KAAKoe,SAAW,UAChBpe,KAAKqe,eAAiB,UAGtBre,KAAK0P,SAGL1P,KAAK4U,WAAW9E,GAGZsE,GACFpU,KAAK2Z,QAAQvF,GA0iEjB,QAASkK,GAAUhU,GACjB,MAAI,WAAaA,GACRA,EAAMiU,QACPjU,EAAMkU,cAAc,IAAMlU,EAAMkU,cAAc,GAAGD,SAAW,EAQtE,QAASE,GAAUnU,GACjB,MAAI,WAAaA,GACRA,EAAMoU,QACPpU,EAAMkU,cAAc,IAAMlU,EAAMkU,cAAc,GAAGE,SAAW,EA/pEtE,GAAIC,GAAUze,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAmGrCye,GAAQ3d,EAAQ6T,WAKhB7T,EAAQ6T,UAAU+J,UAAY,WAC5B5e,KAAKyE,MAAQ,GAAIpD,GAAQ,GAAKrB,KAAKud,KAAOvd,KAAKqd,MAAO,GAAKrd,KAAK0d,KAAO1d,KAAKwd,MAAO,GAAKxd,KAAK6d,KAAO7d,KAAK2d,OAGrG3d,KAAKsc,kBACHtc,KAAKyE,MAAM0O,EAAInT,KAAKyE,MAAM2O,EAE5BpT,KAAKyE,MAAM2O,EAAIpT,KAAKyE,MAAM0O,EAG1BnT,KAAKyE,MAAM0O,EAAInT,KAAKyE,MAAM2O,GAK9BpT,KAAKyE,MAAMoa,GAAK7e,KAAK0c,cAIrB1c,KAAKyE,MAAMD,MAAQ,GAAKxE,KAAK+d,SAAW/d,KAAK8d,SAG7C,IAAIgB,IAAW9e,KAAKud,KAAOvd,KAAKqd,MAAQ,EAAIrd,KAAKyE,MAAM0O,EACnD4L,GAAW/e,KAAK0d,KAAO1d,KAAKwd,MAAQ,EAAIxd,KAAKyE,MAAM2O,EACnD4L,GAAWhf,KAAK6d,KAAO7d,KAAK2d,MAAQ,EAAI3d,KAAKyE,MAAMoa,CACvD7e,MAAK6c,OAAOoC,eAAeH,EAASC,EAASC,IAS/Che,EAAQ6T,UAAUqK,eAAiB,SAAUC,GAC3C,GAAIC,GAAcpf,KAAKqf,2BAA2BF,EAClD,OAAOnf,MAAKsf,4BAA4BF,IAW1Cpe,EAAQ6T,UAAUwK,2BAA6B,SAAUF,GACvD,GAAII,GAAKJ,EAAQhM,EAAInT,KAAKyE,MAAM0O,EAC5BqM,EAAKL,EAAQ/L,EAAIpT,KAAKyE,MAAM2O,EAC5BqM,EAAKN,EAAQN,EAAI7e,KAAKyE,MAAMoa,EAC5Ba,EAAK1f,KAAK6c,OAAO8C,oBAAoBxM,EACrCyM,EAAK5f,KAAK6c,OAAO8C,oBAAoBvM,EACrCyM,EAAK7f,KAAK6c,OAAO8C,oBAAoBd,EAGzCiB,EAAQpb,KAAKqb,IAAI/f,KAAK6c,OAAOmD,oBAAoB7M,GAC7C8M,EAAQvb,KAAKwb,IAAIlgB,KAAK6c,OAAOmD,oBAAoB7M,GACjDgN,EAAQzb,KAAKqb,IAAI/f,KAAK6c,OAAOmD,oBAAoB5M,GACjDgN,EAAQ1b,KAAKwb,IAAIlgB,KAAK6c,OAAOmD,oBAAoB5M,GACjDiN,EAAQ3b,KAAKqb,IAAI/f,KAAK6c,OAAOmD,oBAAoBnB,GACjDyB,EAAQ5b,KAAKwb,IAAIlgB,KAAK6c,OAAOmD,oBAAoBnB,GAGrD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACjEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAKG,IAChIe,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAKG,GAEpI,OAAO,IAAIre,GAAQkf,EAAIC,EAAIC,IAU7Bzf,EAAQ6T,UAAUyK,4BAA8B,SAAUF,GACxD,GAQIsB,GACAC,EATAC,EAAK5gB,KAAK8c,IAAI3J,EACd0N,EAAK7gB,KAAK8c,IAAI1J,EACd0N,EAAK9gB,KAAK8c,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAerB,OAVI7e,MAAKoc,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAEvBC,EAAKH,IAAOO,EAAK9gB,KAAK6c,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAK9gB,KAAK6c,OAAOkE,iBAKxB,GAAI3f,GAAQpB,KAAKghB,QAAUN,EAAK1gB,KAAKihB,MAAMC,OAAOC,YAAanhB,KAAKohB,QAAUT,EAAK3gB,KAAKihB,MAAMC,OAAOC,cAO9GngB,EAAQ6T,UAAUwM,oBAAsB,SAAUC,GAChD,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAA+B,gBAApBH,GACTC,EAAOD,EACPE,EAAS,OACTC,EAAc,MACT,IAA+B,gBAApBH,GACalb,SAAzBkb,EAAgBC,OAAoBA,EAAOD,EAAgBC,MAChCnb,SAA3Bkb,EAAgBE,SAAsBA,EAASF,EAAgBE,QAC/Bpb,SAAhCkb,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBACxE,IAAwBrb,SAApBkb,EACT,KAAM,qCAGRthB,MAAKihB,MAAM7S,MAAMkT,gBAAkBC,EACnCvhB,KAAKihB,MAAM7S,MAAMsT,YAAcF,EAC/BxhB,KAAKihB,MAAM7S,MAAMuT,YAAcF,EAAc,KAC7CzhB,KAAKihB,MAAM7S,MAAMwT,YAAc,SAIjC5gB,EAAQkb,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAK,EACL6F,QAAS,EACTC,SAAU,EACVC,QAAS,EACTC,KAAM,EACNC,KAAM,EACNC,QAAS,GASXrhB,EAAQ6T,UAAUyN,gBAAkB,SAAUC,GAC5C,OAAQA,GACN,IAAK,MACH,MAAOvhB,GAAQkb,MAAMC,GACvB,KAAK,WACH,MAAOnb,GAAQkb,MAAM8F,OACvB,KAAK,YACH,MAAOhhB,GAAQkb,MAAM+F,QACvB,KAAK,WACH,MAAOjhB,GAAQkb,MAAMgG,OACvB,KAAK,OACH,MAAOlhB,GAAQkb,MAAMkG,IACvB,KAAK,OACH,MAAOphB,GAAQkb,MAAMiG,IACvB,KAAK,UACH,MAAOnhB,GAAQkb,MAAMmG,OACvB,KAAK,MACH,MAAOrhB,GAAQkb,MAAM2F,GACvB,KAAK,YACH,MAAO7gB,GAAQkb,MAAM4F,QACvB,KAAK,WACH,MAAO9gB,GAAQkb,MAAM6F,QAGzB,MAAO,IAQT/gB,EAAQ6T,UAAU2N,wBAA0B,SAAUpO,EAAMhG,GAC1D,GAAIpO,KAAKoO,QAAUpN,EAAQkb,MAAMC,KAAOnc,KAAKoO,QAAUpN,EAAQkb,MAAM8F,SAAWhiB,KAAKoO,QAAUpN,EAAQkb,MAAMkG,MAAQpiB,KAAKoO,QAAUpN,EAAQkb,MAAMiG,MAAQniB,KAAKoO,QAAUpN,EAAQkb,MAAMmG,SAAWriB,KAAKoO,QAAUpN,EAAQkb,MAAM2F,IAE7N7hB,KAAKgd,KAAO,EACZhd,KAAKid,KAAO,EACZjd,KAAKkd,KAAO,EACZld,KAAKmd,SAAW/W,OAEZgO,EAAK+E,qBAAuB,IAC9BnZ,KAAKod,UAAY,OAEd,CAAA,GAAIpd,KAAKoO,QAAUpN,EAAQkb,MAAM+F,UAAYjiB,KAAKoO,QAAUpN,EAAQkb,MAAMgG,SAAWliB,KAAKoO,QAAUpN,EAAQkb,MAAM4F,UAAY9hB,KAAKoO,QAAUpN,EAAQkb,MAAM6F,QAWhK,KAAM,kBAAoB/hB,KAAKoO,MAAQ,GATvCpO,MAAKgd,KAAO,EACZhd,KAAKid,KAAO,EACZjd,KAAKkd,KAAO;AACZld,KAAKmd,SAAW,EAEZ/I,EAAK+E,qBAAuB,IAC9BnZ,KAAKod,UAAY,KAOvBpc,EAAQ6T,UAAUsB,gBAAkB,SAAU/B,GAC5C,MAAOA,GAAK1N,QAGd1F,EAAQ6T,UAAUsE,mBAAqB,SAAU/E,GAC/C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGpO,eAAe0c,IACzBD,GAGJ,OAAOA,IAGTzhB,EAAQ6T,UAAU8N,kBAAoB,SAAUvO,EAAMsO,GAEpD,IAAK,GADDE,MACKpc,EAAI,EAAGA,EAAI4N,EAAK1N,OAAQF,IACgB,IAA3Coc,EAAerb,QAAQ6M,EAAK5N,GAAGkc,KACjCE,EAAepb,KAAK4M,EAAK5N,GAAGkc,GAGhC,OAAOE,IAGT5hB,EAAQ6T,UAAUgO,eAAiB,SAAUzO,EAAMsO,GAEjD,IAAK,GADDI,IAAWze,IAAK+P,EAAK,GAAGsO,GAASpe,IAAK8P,EAAK,GAAGsO,IACzClc,EAAI,EAAGA,EAAI4N,EAAK1N,OAAQF,IAC3Bsc,EAAOze,IAAM+P,EAAK5N,GAAGkc,KACvBI,EAAOze,IAAM+P,EAAK5N,GAAGkc,IAEnBI,EAAOxe,IAAM8P,EAAK5N,GAAGkc,KACvBI,EAAOxe,IAAM8P,EAAK5N,GAAGkc,GAGzB,OAAOI,IAST9hB,EAAQ6T,UAAUkO,gBAAkB,SAAUC,EAAS5U,GACrD,GAAIyH,GAAK7V,IAOT,IAJIA,KAAKma,SACPna,KAAKma,QAAQ/E,IAAI,IAAKpV,KAAKijB,WAGb7c,SAAZ4c,EAAJ,CAEIjc,MAAMC,QAAQgc,KAChBA,EAAU,GAAIniB,GAAQmiB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBniB,IAAWmiB,YAAmBliB,IAGnD,KAAM,IAAI0C,OAAM,uCAGlB,IALE4Q,EAAO4O,EAAQpM,MAKE,GAAfxC,EAAK1N,OAAT,CAEA1G,KAAKma,QAAU6I,EACfhjB,KAAKkZ,UAAY9E,EAGjBpU,KAAKijB,UAAY,WACfpN,EAAG8D,QAAQ9D,EAAGsE,UAEhBna,KAAKma,QAAQlF,GAAG,IAAKjV,KAAKijB,WAS1BjjB,KAAKgd,KAAO,IACZhd,KAAKid,KAAO,IACZjd,KAAKkd,KAAO,IACZld,KAAKmd,SAAW,QAChBnd,KAAKod,UAAY,SAGbhJ,EAAK,GAAGpO,eAAe,WACDI,SAApBpG,KAAKkjB,aACPljB,KAAKkjB,WAAa,GAAI/hB,GAAO6hB,EAAShjB,KAAKod,UAAWpd,MACtDA,KAAKkjB,WAAWC,kBAAkB,WAChCtN,EAAGuN,WAKT,IAAIC,GAAWrjB,KAAKoO,OAASpN,EAAQkb,MAAM2F,KAAO7hB,KAAKoO,OAASpN,EAAQkb,MAAM4F,UAAY9hB,KAAKoO,OAASpN,EAAQkb,MAAM6F,OAGtH,IAAIsB,EAAU,CACZ,GAA8Bjd,SAA1BpG,KAAKsjB,iBACPtjB,KAAKge,UAAYhe,KAAKsjB,qBACjB,CACL,GAAIC,GAAQvjB,KAAK2iB,kBAAkBvO,EAAMpU,KAAKgd,KAC9Chd,MAAKge,UAAYuF,EAAM,GAAKA,EAAM,IAAM,EAG1C,GAA8Bnd,SAA1BpG,KAAKwjB,iBACPxjB,KAAKie,UAAYje,KAAKwjB,qBACjB,CACL,GAAIC,GAAQzjB,KAAK2iB,kBAAkBvO,EAAMpU,KAAKid,KAC9Cjd,MAAKie,UAAYwF,EAAM,GAAKA,EAAM,IAAM,GAK5C,GAAIC,GAAS1jB,KAAK6iB,eAAezO,EAAMpU,KAAKgd,KACxCqG,KACFK,EAAOrf,KAAOrE,KAAKge,UAAY,EAC/B0F,EAAOpf,KAAOtE,KAAKge,UAAY,GAEjChe,KAAKqd,KAA4BjX,SAArBpG,KAAK2jB,YAA4B3jB,KAAK2jB,YAAcD,EAAOrf,IACvErE,KAAKud,KAA4BnX,SAArBpG,KAAK4jB,YAA4B5jB,KAAK4jB,YAAcF,EAAOpf,IACnEtE,KAAKud,MAAQvd,KAAKqd,OAAMrd,KAAKud,KAAOvd,KAAKqd,KAAO,GACpDrd,KAAKsd,MAA8BlX,SAAtBpG,KAAK6jB,aAA6B7jB,KAAK6jB,cAAgB7jB,KAAKud,KAAOvd,KAAKqd,MAAQ,CAE7F,IAAIyG,GAAS9jB,KAAK6iB,eAAezO,EAAMpU,KAAKid,KACxCoG,KACFS,EAAOzf,KAAOrE,KAAKie,UAAY,EAC/B6F,EAAOxf,KAAOtE,KAAKie,UAAY,GAEjCje,KAAKwd,KAA4BpX,SAArBpG,KAAK+jB,YAA4B/jB,KAAK+jB,YAAcD,EAAOzf,IACvErE,KAAK0d,KAA4BtX,SAArBpG,KAAKgkB,YAA4BhkB,KAAKgkB,YAAcF,EAAOxf,IACnEtE,KAAK0d,MAAQ1d,KAAKwd,OAAMxd,KAAK0d,KAAO1d,KAAKwd,KAAO,GACpDxd,KAAKyd,MAA8BrX,SAAtBpG,KAAKikB,aAA6BjkB,KAAKikB,cAAgBjkB,KAAK0d,KAAO1d,KAAKwd,MAAQ,CAE7F,IAAI0G,GAASlkB,KAAK6iB,eAAezO,EAAMpU,KAAKkd,KAM5C,IALAld,KAAK2d,KAA4BvX,SAArBpG,KAAKmkB,YAA4BnkB,KAAKmkB,YAAcD,EAAO7f,IACvErE,KAAK6d,KAA4BzX,SAArBpG,KAAKokB,YAA4BpkB,KAAKokB,YAAcF,EAAO5f,IACnEtE,KAAK6d,MAAQ7d,KAAK2d,OAAM3d,KAAK6d,KAAO7d,KAAK2d,KAAO,GACpD3d,KAAK4d,MAA8BxX,SAAtBpG,KAAKqkB,aAA6BrkB,KAAKqkB,cAAgBrkB,KAAK6d,KAAO7d,KAAK2d,MAAQ,EAEvEvX,SAAlBpG,KAAKmd,SAAwB,CAC/B,GAAImH,GAAatkB,KAAK6iB,eAAezO,EAAMpU,KAAKmd,SAChDnd,MAAK8d,SAAoC1X,SAAzBpG,KAAKukB,gBAAgCvkB,KAAKukB,gBAAkBD,EAAWjgB,IACvFrE,KAAK+d,SAAoC3X,SAAzBpG,KAAKwkB,gBAAgCxkB,KAAKwkB,gBAAkBF,EAAWhgB,IACnFtE,KAAK+d,UAAY/d,KAAK8d,WAAU9d,KAAK+d,SAAW/d,KAAK8d,SAAW,GAItE9d,KAAK4e,eAQP5d,EAAQ6T,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG5M,EAAGqY,EAAG/Y,EAAKyN,EAEjBwJ,IAEJ,IAAI/c,KAAKoO,QAAUpN,EAAQkb,MAAMiG,MAAQniB,KAAKoO,QAAUpN,EAAQkb,MAAMmG,QAAS,CAK7E,GAAIkB,MACAE,IACJ,KAAKjd,EAAI,EAAGA,EAAIxG,KAAKmW,gBAAgB/B,GAAO5N,IAC1C2M,EAAIiB,EAAK5N,GAAGxG,KAAKgd,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAGxG,KAAKid,OAAS,EAED,KAArBsG,EAAMhc,QAAQ4L,IAChBoQ,EAAM/b,KAAK2L,GAEY,KAArBsQ,EAAMlc,QAAQ6L,IAChBqQ,EAAMjc,KAAK4L,EAIf,IAAIsR,GAAa,SAAoBpe,EAAGC,GACtC,MAAOD,GAAIC,EAEbgd,GAAM1L,KAAK6M,GACXjB,EAAM5L,KAAK6M,EAGX,IAAIC,KACJ,KAAKne,EAAI,EAAGA,EAAI4N,EAAK1N,OAAQF,IAAK,CAChC2M,EAAIiB,EAAK5N,GAAGxG,KAAKgd,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAGxG,KAAKid,OAAS,EAC1B4B,EAAIzK,EAAK5N,GAAGxG,KAAKkd,OAAS,CAE1B,IAAI0H,GAASrB,EAAMhc,QAAQ4L,GACvB0R,EAASpB,EAAMlc,QAAQ6L,EAEAhN,UAAvBue,EAAWC,KACbD,EAAWC,MAGb,IAAIzF,GAAU,GAAI9d,EAClB8d,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ/Y,KACAA,EAAIyN,MAAQ4L,EACZrZ,EAAIgf,MAAQ1e,OACZN,EAAIif,OAAS3e,OACbN,EAAIkf,OAAS,GAAI3jB,GAAQ8R,EAAGC,EAAGpT,KAAK2d,MAEpCgH,EAAWC,GAAQC,GAAU/e,EAE7BiX,EAAWvV,KAAK1B,GAIlB,IAAKqN,EAAI,EAAGA,EAAIwR,EAAWje,OAAQyM,IACjC,IAAKC,EAAI,EAAGA,EAAIuR,EAAWxR,GAAGzM,OAAQ0M,IAChCuR,EAAWxR,GAAGC,KAChBuR,EAAWxR,GAAGC,GAAG6R,WAAa9R,EAAIwR,EAAWje,OAAS,EAAIie,EAAWxR,EAAI,GAAGC,GAAKhN,OACjFue,EAAWxR,GAAGC,GAAG8R,SAAW9R,EAAIuR,EAAWxR,GAAGzM,OAAS,EAAIie,EAAWxR,GAAGC,EAAI,GAAKhN,OAClFue,EAAWxR,GAAGC,GAAG+R,WAAahS,EAAIwR,EAAWje,OAAS,GAAK0M,EAAIuR,EAAWxR,GAAGzM,OAAS,EAAIie,EAAWxR,EAAI,GAAGC,EAAI,GAAKhN,YAO3H,KAAKI,EAAI,EAAGA,EAAI4N,EAAK1N,OAAQF,IAC3B+M,EAAQ,GAAIlS,GACZkS,EAAMJ,EAAIiB,EAAK5N,GAAGxG,KAAKgd,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK5N,GAAGxG,KAAKid,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK5N,GAAGxG,KAAKkd,OAAS,EAEV9W,SAAlBpG,KAAKmd,WACP5J,EAAM/O,MAAQ4P,EAAK5N,GAAGxG,KAAKmd,WAAa,GAG1CrX,KACAA,EAAIyN,MAAQA,EACZzN,EAAIkf,OAAS,GAAI3jB,GAAQkS,EAAMJ,EAAGI,EAAMH,EAAGpT,KAAK2d,MAChD7X,EAAIgf,MAAQ1e,OACZN,EAAIif,OAAS3e,OAEb2W,EAAWvV,KAAK1B,EAIpB,OAAOiX,IAST/b,EAAQ6T,UAAUnF,OAAS,WAEzB,KAAO1P,KAAKqb,iBAAiBpX,iBAC3BjE,KAAKqb,iBAAiBlX,YAAYnE,KAAKqb,iBAAiBnX,WAG1DlE,MAAKihB,MAAQtO,SAASM,cAAc,OACpCjT,KAAKihB,MAAM7S,MAAMgX,SAAW,WAC5BplB,KAAKihB,MAAM7S,MAAMiX,SAAW,SAG5BrlB,KAAKihB,MAAMC,OAASvO,SAASM,cAAc,UAC3CjT,KAAKihB,MAAMC,OAAO9S,MAAMgX,SAAW,WACnCplB,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAMC,OAGhC,IAAIoE,GAAW3S,SAASM,cAAc,MACtCqS,GAASlX,MAAMnC,MAAQ,MACvBqZ,EAASlX,MAAMmX,WAAa,OAC5BD,EAASlX,MAAMoX,QAAU,OACzBF,EAASG,UAAY,mDACrBzlB,KAAKihB,MAAMC,OAAOrO,YAAYyS,GAGhCtlB,KAAKihB,MAAM5L,OAAS1C,SAASM,cAAc,OAC3CjT,KAAKihB,MAAM5L,OAAOjH,MAAMgX,SAAW,WACnCplB,KAAKihB,MAAM5L,OAAOjH,MAAM4W,OAAS,MACjChlB,KAAKihB,MAAM5L,OAAOjH,MAAM1F,KAAO,MAC/B1I,KAAKihB,MAAM5L,OAAOjH,MAAM6F,MAAQ,OAChCjU,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAM5L,OAGlC,IAAIQ,GAAK7V,KACL0lB,EAAc,SAAqBpb,GACrCuL,EAAG8P,aAAarb,IAEdsb,EAAe,SAAsBtb,GACvCuL,EAAGgQ,cAAcvb,IAEfwb,EAAe,SAAsBxb,GACvCuL,EAAGkQ,SAASzb,IAEV0b,EAAY,SAAmB1b,GACjCuL,EAAGoQ,WAAW3b,GAIhB3J,GAAKgJ,iBAAiB3J,KAAKihB,MAAMC,OAAQ,UAAWgF,WACpDvlB,EAAKgJ,iBAAiB3J,KAAKihB,MAAMC,OAAQ,YAAawE,GACtD/kB,EAAKgJ,iBAAiB3J,KAAKihB,MAAMC,OAAQ,aAAc0E,GACvDjlB,EAAKgJ,iBAAiB3J,KAAKihB,MAAMC,OAAQ,aAAc4E,GACvDnlB,EAAKgJ,iBAAiB3J,KAAKihB,MAAMC,OAAQ,YAAa8E,GAGtDhmB,KAAKqb,iBAAiBxI,YAAY7S,KAAKihB,QAUzCjgB,EAAQ6T,UAAUsR,QAAU,SAAUlS,EAAOC,GAC3ClU,KAAKihB,MAAM7S,MAAM6F,MAAQA,EACzBjU,KAAKihB,MAAM7S,MAAM8F,OAASA,EAE1BlU,KAAKomB,iBAMPplB,EAAQ6T,UAAUuR,cAAgB,WAChCpmB,KAAKihB,MAAMC,OAAO9S,MAAM6F,MAAQ,OAChCjU,KAAKihB,MAAMC,OAAO9S,MAAM8F,OAAS,OAEjClU,KAAKihB,MAAMC,OAAOjN,MAAQjU,KAAKihB,MAAMC,OAAOC,YAC5CnhB,KAAKihB,MAAMC,OAAOhN,OAASlU,KAAKihB,MAAMC,OAAOmF,aAG7CrmB,KAAKihB,MAAM5L,OAAOjH,MAAM6F,MAAQjU,KAAKihB,MAAMC,OAAOC,YAAc,GAAS,MAM3EngB,EAAQ6T,UAAUyR,eAAiB,WACjC,IAAKtmB,KAAKihB,MAAM5L,SAAWrV,KAAKihB,MAAM5L,OAAOkR,OAAQ,KAAM,wBAE3DvmB,MAAKihB,MAAM5L,OAAOkR,OAAOC,QAM3BxlB,EAAQ6T,UAAU4R,cAAgB,WAC3BzmB,KAAKihB,MAAM5L,QAAWrV,KAAKihB,MAAM5L,OAAOkR,QAE7CvmB,KAAKihB,MAAM5L,OAAOkR,OAAOG,QAS3B1lB,EAAQ6T,UAAU8R,cAAgB,WAEmC,MAA/D3mB,KAAKub,eAAeqL,OAAO5mB,KAAKub,eAAe7U,OAAS,GAC1D1G,KAAKghB,QAAU6F,WAAW7mB,KAAKub,gBAAkB,IAAMvb,KAAKihB,MAAMC,OAAOC,YAEzEnhB,KAAKghB,QAAU6F,WAAW7mB,KAAKub,gBAIkC,MAA/Dvb,KAAKwb,eAAeoL,OAAO5mB,KAAKwb,eAAe9U,OAAS,GAC1D1G,KAAKohB,QAAUyF,WAAW7mB,KAAKwb,gBAAkB,KAAOxb,KAAKihB,MAAMC,OAAOmF,aAAermB,KAAKihB,MAAM5L,OAAOgR,cAE3GrmB,KAAKohB,QAAUyF,WAAW7mB,KAAKwb,iBAoBnCxa,EAAQ6T,UAAUiS,kBAAoB,SAAUC,GAClC3gB,SAAR2gB,IAImB3gB,SAAnB2gB,EAAIC,YAA6C5gB,SAAjB2gB,EAAIE,UACtCjnB,KAAK6c,OAAOqK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B7gB,SAAjB2gB,EAAII,UACNnnB,KAAK6c,OAAOuK,aAAaL,EAAII,UAG/BnnB,KAAKojB,WAQPpiB,EAAQ6T,UAAUwS,kBAAoB,WACpC,GAAIN,GAAM/mB,KAAK6c,OAAOyK,gBAEtB,OADAP,GAAII,SAAWnnB,KAAK6c,OAAOkE,eACpBgG,GAMT/lB,EAAQ6T,UAAU0S,UAAY,SAAUnT,GAEtCpU,KAAK+iB,gBAAgB3O,EAAMpU,KAAKoO,OAE5BpO,KAAKkjB,WAEPljB,KAAK+c,WAAa/c,KAAKkjB,WAAWuB,iBAGlCzkB,KAAK+c,WAAa/c,KAAKykB,eAAezkB,KAAKkZ,WAI7ClZ,KAAKwnB,iBAOPxmB,EAAQ6T,UAAU8E,QAAU,SAAUvF,GACpCpU,KAAKunB,UAAUnT,GACfpU,KAAKojB,SAGDpjB,KAAKynB,oBAAsBznB,KAAKkjB,YAClCljB,KAAKsmB,kBAQTtlB,EAAQ6T,UAAUD,WAAa,SAAU9E,GACvC,GAAI4X,GAAiBthB,MAIrB,IAFApG,KAAKymB,gBAEWrgB,SAAZ0J,EAAuB,CAkBzB,GAhBsB1J,SAAlB0J,EAAQmE,QAAqBjU,KAAKiU,MAAQnE,EAAQmE,OAC/B7N,SAAnB0J,EAAQoE,SAAsBlU,KAAKkU,OAASpE,EAAQoE,QAEhC9N,SAApB0J,EAAQgP,UAAuB9e,KAAKub,eAAiBzL,EAAQgP,SACzC1Y,SAApB0J,EAAQiP,UAAuB/e,KAAKwb,eAAiB1L,EAAQiP,SAErC3Y,SAAxB0J,EAAQkM,cAA2Bhc,KAAKgc,YAAclM,EAAQkM,aACtC5V,SAAxB0J,EAAQmM,cAA2Bjc,KAAKic,YAAcnM,EAAQmM,aAC3C7V,SAAnB0J,EAAQ2L,SAAsBzb,KAAKyb,OAAS3L,EAAQ2L,QACjCrV,SAAnB0J,EAAQ4L,SAAsB1b,KAAK0b,OAAS5L,EAAQ4L,QACjCtV,SAAnB0J,EAAQ6L,SAAsB3b,KAAK2b,OAAS7L,EAAQ6L,QAE5BvV,SAAxB0J,EAAQ+L,cAA2B7b,KAAK6b,YAAc/L,EAAQ+L,aACtCzV,SAAxB0J,EAAQgM,cAA2B9b,KAAK8b,YAAchM,EAAQgM,aACtC1V,SAAxB0J,EAAQiM,cAA2B/b,KAAK+b,YAAcjM,EAAQiM,aAE5C3V,SAAlB0J,EAAQ1B,MAAqB,CAC/B,GAAIuZ,GAAc3nB,KAAKsiB,gBAAgBxS,EAAQ1B,MAC3B,MAAhBuZ,IACF3nB,KAAKoO,MAAQuZ,GAGQvhB,SAArB0J,EAAQuM,WAAwBrc,KAAKqc,SAAWvM,EAAQuM,UAC5BjW,SAA5B0J,EAAQsM,kBAA+Bpc,KAAKoc,gBAAkBtM,EAAQsM,iBAC/ChW,SAAvB0J,EAAQyM,aAA0Bvc,KAAKuc,WAAazM,EAAQyM,YACxCnW,SAApB0J,EAAQ8X,UAAuB5nB,KAAKyc,YAAc3M,EAAQ8X,SACxBxhB,SAAlC0J,EAAQ+X,wBAAqC7nB,KAAK6nB,sBAAwB/X,EAAQ+X,uBACtDzhB,SAA5B0J,EAAQwM,kBAA+Btc,KAAKsc,gBAAkBxM,EAAQwM,iBAC5ClW,SAA1B0J,EAAQ4M,gBAA6B1c,KAAK0c,cAAgB5M,EAAQ4M,eAEpCtW,SAA9B0J,EAAQ6M,oBAAiC3c,KAAK2c,kBAAoB7M,EAAQ6M,mBAC7CvW,SAA7B0J,EAAQ8M,mBAAgC5c,KAAK4c,iBAAmB9M,EAAQ8M,kBACzCxW,SAA/B0J,EAAQ2X,qBAAkCznB,KAAKynB,mBAAqB3X,EAAQ2X,oBAEtDrhB,SAAtB0J,EAAQkO,YAAyBhe,KAAKsjB,iBAAmBxT,EAAQkO,WAC3C5X,SAAtB0J,EAAQmO,YAAyBje,KAAKwjB,iBAAmB1T,EAAQmO,WAEhD7X,SAAjB0J,EAAQuN,OAAoBrd,KAAK2jB,YAAc7T,EAAQuN,MACrCjX,SAAlB0J,EAAQwN,QAAqBtd,KAAK6jB,aAAe/T,EAAQwN,OACxClX,SAAjB0J,EAAQyN,OAAoBvd,KAAK4jB,YAAc9T,EAAQyN,MACtCnX,SAAjB0J,EAAQ0N,OAAoBxd,KAAK+jB,YAAcjU,EAAQ0N,MACrCpX,SAAlB0J,EAAQ2N,QAAqBzd,KAAKikB,aAAenU,EAAQ2N,OACxCrX,SAAjB0J,EAAQ4N,OAAoB1d,KAAKgkB,YAAclU,EAAQ4N,MACtCtX,SAAjB0J,EAAQ6N,OAAoB3d,KAAKmkB,YAAcrU,EAAQ6N,MACrCvX,SAAlB0J,EAAQ8N,QAAqB5d,KAAKqkB,aAAevU,EAAQ8N,OACxCxX,SAAjB0J,EAAQ+N,OAAoB7d,KAAKokB,YAActU,EAAQ+N,MAClCzX,SAArB0J,EAAQgO,WAAwB9d,KAAKukB,gBAAkBzU,EAAQgO,UAC1C1X,SAArB0J,EAAQiO,WAAwB/d,KAAKwkB,gBAAkB1U,EAAQiO,UAEpC3X,SAA3B0J,EAAQ4X,iBAA8BA,EAAiB5X,EAAQ4X,gBAE5CthB,SAAnBshB,GACF1nB,KAAK6c,OAAOqK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEjnB,KAAK6c,OAAOuK,aAAaM,EAAeP,YAExCnnB,KAAK6c,OAAOqK,eAAe,EAAG,IAC9BlnB,KAAK6c,OAAOuK,aAAa,MAI7BpnB,KAAKqhB,oBAAoBvR,GAAWA,EAAQwR,iBAE5CthB,KAAKmmB,QAAQnmB,KAAKiU,MAAOjU,KAAKkU,QAG1BlU,KAAKkZ,WACPlZ,KAAK2Z,QAAQ3Z,KAAKkZ,WAIhBlZ,KAAKynB,oBAAsBznB,KAAKkjB,YAClCljB,KAAKsmB,kBAOTtlB,EAAQ6T,UAAUuO,OAAS,WACzB,GAAwBhd,SAApBpG,KAAK+c,WACP,KAAM,mCAGR/c,MAAKomB,gBACLpmB,KAAK2mB,gBACL3mB,KAAK8nB,gBACL9nB,KAAK+nB,eACL/nB,KAAKgoB,cAEDhoB,KAAKoO,QAAUpN,EAAQkb,MAAMiG,MAAQniB,KAAKoO,QAAUpN,EAAQkb,MAAMmG,QACpEriB,KAAKioB,kBACIjoB,KAAKoO,QAAUpN,EAAQkb,MAAMkG,KACtCpiB,KAAKkoB,kBACIloB,KAAKoO,QAAUpN,EAAQkb,MAAM2F,KAAO7hB,KAAKoO,QAAUpN,EAAQkb,MAAM4F,UAAY9hB,KAAKoO,QAAUpN,EAAQkb,MAAM6F,QACnH/hB,KAAKmoB,iBAGLnoB,KAAKooB,iBAGPpoB,KAAKqoB,cACLroB,KAAKsoB,iBAMPtnB,EAAQ6T,UAAUkT,aAAe,WAC/B,GAAI7G,GAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAGvH,EAAOjN,MAAOiN,EAAOhN,SAM3ClT,EAAQ6T,UAAUyT,cAAgB,WAChC,GAAIlV,EAEJ,IAAIpT,KAAKoO,QAAUpN,EAAQkb,MAAM+F,UAAYjiB,KAAKoO,QAAUpN,EAAQkb,MAAMgG,QAAS,CAEjF,GAEIwG,GAAUC,EAFVC,EAAmC,IAAzB5oB,KAAKihB,MAAME,WAGrBnhB,MAAKoO,QAAUpN,EAAQkb,MAAMgG,SAC/BwG,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAEzBF,EAAW,GACXC,EAAW,GAGb,IAAIzU,GAASxP,KAAKJ,IAA8B,IAA1BtE,KAAKihB,MAAMoF,aAAqB,KAClDzd,EAAM5I,KAAKsb,OACXuN,EAAQ7oB,KAAKihB,MAAME,YAAcnhB,KAAKsb,OACtC5S,EAAOmgB,EAAQF,EACf3D,EAASpc,EAAMsL,EAGrB,GAAIgN,GAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEP/oB,KAAKoO,QAAUpN,EAAQkb,MAAM+F,SAAU,CAEzC,GAAI+G,GAAO,EACPC,EAAO/U,CACX,KAAKd,EAAI4V,EAAUC,EAAJ7V,EAAUA,IAAK,CAC5B,GAAIrE,IAAKqE,EAAI4V,IAASC,EAAOD,GAGzBjb,EAAU,IAAJgB,EACN9C,EAAQjM,KAAKkpB,SAASnb,EAAK,EAAG,EAElCwa,GAAIY,YAAcld,EAClBsc,EAAIa,YACJb,EAAIc,OAAO3gB,EAAME,EAAMwK,GACvBmV,EAAIe,OAAOT,EAAOjgB,EAAMwK,GACxBmV,EAAI/G,SAGN+G,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIgB,WAAW7gB,EAAME,EAAK+f,EAAUzU,GAiBtC,GAdIlU,KAAKoO,QAAUpN,EAAQkb,MAAMgG,UAE/BqG,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIiB,UAAYxpB,KAAKoe,SACrBmK,EAAIa,YACJb,EAAIc,OAAO3gB,EAAME,GACjB2f,EAAIe,OAAOT,EAAOjgB,GAClB2f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU1D,GACxCuD,EAAIe,OAAO5gB,EAAMsc,GACjBuD,EAAIkB,YACJlB,EAAIhH,OACJgH,EAAI/G,UAGFxhB,KAAKoO,QAAUpN,EAAQkb,MAAM+F,UAAYjiB,KAAKoO,QAAUpN,EAAQkb,MAAMgG,QAAS,CAEjF,GAAIwH,GAAc,EACdC,EAAO,GAAIpoB,GAAWvB,KAAK8d,SAAU9d,KAAK+d,UAAW/d,KAAK+d,SAAW/d,KAAK8d,UAAY,GAAG,EAK7F,KAJA6L,EAAK1Y,QACD0Y,EAAKC,aAAe5pB,KAAK8d,UAC3B6L,EAAKE,QAECF,EAAKzY,OACXkC,EAAI4R,GAAU2E,EAAKC,aAAe5pB,KAAK8d,WAAa9d,KAAK+d,SAAW/d,KAAK8d,UAAY5J,EAErFqU,EAAIa,YACJb,EAAIc,OAAO3gB,EAAOghB,EAAatW,GAC/BmV,EAAIe,OAAO5gB,EAAM0K,GACjBmV,EAAI/G,SAEJ+G,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAASL,EAAKC,aAAclhB,EAAO,EAAIghB,EAAatW,GAExDuW,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIpW,GAAQ3T,KAAKic,WACjBsM,GAAIyB,SAASrW,EAAOkV,EAAO7D,EAAShlB,KAAKsb,UAO7Cta,EAAQ6T,UAAU2S,cAAgB,WAGhC,GAFAxnB,KAAKihB,MAAM5L,OAAOoQ,UAAY,GAE1BzlB,KAAKkjB,WAAY,CACnB,GAAIpT,IACFma,QAASjqB,KAAK6nB,uBAEZtB,EAAS,GAAIjlB,GAAOtB,KAAKihB,MAAM5L,OAAQvF,EAC3C9P,MAAKihB,MAAM5L,OAAOkR,OAASA,EAG3BvmB,KAAKihB,MAAM5L,OAAOjH,MAAMoX,QAAU,OAGlCe,EAAO2D,UAAUlqB,KAAKkjB,WAAWzK,QACjC8N,EAAO4D,gBAAgBnqB,KAAK2c,kBAG5B,IAAI9G,GAAK7V,KACLoqB,EAAW,WACb,GAAIjhB,GAAQod,EAAO8D,UAEnBxU,GAAGqN,WAAWoH,YAAYnhB,GAC1B0M,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELmD,GAAOgE,oBAAoBH,OAE3BpqB,MAAKihB,MAAM5L,OAAOkR,OAASngB,QAO/BpF,EAAQ6T,UAAUiT,cAAgB,WACC1hB,SAA7BpG,KAAKihB,MAAM5L,OAAOkR,QACpBvmB,KAAKihB,MAAM5L,OAAOkR,OAAOnD,UAO7BpiB,EAAQ6T,UAAUwT,YAAc,WAC9B,GAAIroB,KAAKkjB,WAAY,CACnB,GAAIhC,GAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI5W,GAAInT,KAAKsb,OACTlI,EAAIpT,KAAKsb,MACbiN,GAAIyB,SAAShqB,KAAKkjB,WAAWuH,WAAa,KAAOzqB,KAAKkjB,WAAWwH,mBAAoBvX,EAAGC,KAO5FpS,EAAQ6T,UAAUmT,YAAc,WAC9B,GAEI2C,GACAC,EACAjB,EACAkB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAtX,EACAC,EACAsX,EACAC,EAdAlK,EAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAiB5BD,GAAIQ,KAAO,GAAK/oB,KAAK6c,OAAOkE,eAAiB,UAG7C,IAAIsK,GAAW,KAAQrrB,KAAKyE,MAAM0O,EAC9BmY,EAAW,KAAQtrB,KAAKyE,MAAM2O,EAC9BmY,EAAa,EAAIvrB,KAAK6c,OAAOkE,eAC7ByK,EAAWxrB,KAAK6c,OAAOyK,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAmCzkB,SAAtBpG,KAAK6jB,aAClB8F,EAAO,GAAIpoB,GAAWvB,KAAKqd,KAAMrd,KAAKud,KAAMvd,KAAKsd,MAAOuN,GACxDlB,EAAK1Y,QACD0Y,EAAKC,aAAe5pB,KAAKqd,MAC3BsM,EAAKE,QAECF,EAAKzY,OAAO,CAClB,GAAIiC,GAAIwW,EAAKC,YAET5pB,MAAKqc,UACPsO,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAKwd,KAAMxd,KAAK2d,OAC1DiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAK0d,KAAM1d,KAAK2d,OACxD4K,EAAIY,YAAcnpB,KAAKme,UACvBoK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,WAEJmJ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAKwd,KAAMxd,KAAK2d,OAC1DiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAKwd,KAAO6N,EAAUrrB,KAAK2d,OACnE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,SAEJmJ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAK0d,KAAM1d,KAAK2d,OAC1DiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAGnT,KAAK0d,KAAO2N,EAAUrrB,KAAK2d,OACnE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,UAGNwJ,EAAQtmB,KAAKwb,IAAIsL,GAAY,EAAIxrB,KAAKwd,KAAOxd,KAAK0d,KAClDoN,EAAO9qB,KAAKkf,eAAe,GAAI7d,GAAQ8R,EAAG6X,EAAOhrB,KAAK2d,OAClDjZ,KAAKwb,IAAe,EAAXsL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK1X,GAAKmY,GACD7mB,KAAKqb,IAAe,EAAXyL,GAAgB,GAClCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAAS,KAAOhqB,KAAK6b,YAAY8N,EAAKC,cAAgB,KAAMkB,EAAK3X,EAAG2X,EAAK1X,GAE7EuW,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAmCzkB,SAAtBpG,KAAKikB,aAClB0F,EAAO,GAAIpoB,GAAWvB,KAAKwd,KAAMxd,KAAK0d,KAAM1d,KAAKyd,MAAOoN,GACxDlB,EAAK1Y,QACD0Y,EAAKC,aAAe5pB,KAAKwd,MAC3BmM,EAAKE,QAECF,EAAKzY,OACPlR,KAAKqc,UACPsO,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMsM,EAAKC,aAAc5pB,KAAK2d,OAC1EiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMoM,EAAKC,aAAc5pB,KAAK2d,OACxE4K,EAAIY,YAAcnpB,KAAKme,UACvBoK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,WAEJmJ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMsM,EAAKC,aAAc5pB,KAAK2d,OAC1EiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAOiO,EAAU3B,EAAKC,aAAc5pB,KAAK2d,OACnF4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,SAEJmJ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMoM,EAAKC,aAAc5pB,KAAK2d,OAC1EiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAO+N,EAAU3B,EAAKC,aAAc5pB,KAAK2d,OACnF4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,UAGNuJ,EAAQrmB,KAAKqb,IAAIyL,GAAY,EAAIxrB,KAAKqd,KAAOrd,KAAKud,KAClDuN,EAAO9qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOpB,EAAKC,aAAc5pB,KAAK2d,OAClEjZ,KAAKwb,IAAe,EAAXsL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK1X,GAAKmY,GACD7mB,KAAKqb,IAAe,EAAXyL,GAAgB,GAClCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAAS,KAAOhqB,KAAK8b,YAAY6N,EAAKC,cAAgB,KAAMkB,EAAK3X,EAAG2X,EAAK1X,GAE7EuW,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAmCzkB,SAAtBpG,KAAKqkB,aAClBsF,EAAO,GAAIpoB,GAAWvB,KAAK2d,KAAM3d,KAAK6d,KAAM7d,KAAK4d,MAAOiN,GACxDlB,EAAK1Y,QACD0Y,EAAKC,aAAe5pB,KAAK2d,MAC3BgM,EAAKE,OAEPkB,EAAQrmB,KAAKwb,IAAIsL,GAAY,EAAIxrB,KAAKqd,KAAOrd,KAAKud,KAClDyN,EAAQtmB,KAAKqb,IAAIyL,GAAY,EAAIxrB,KAAKwd,KAAOxd,KAAK0d,MAC1CiM,EAAKzY,OAEXyZ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOqB,EAAKxX,EAAIoY,EAAYZ,EAAKvX,GACrCmV,EAAI/G,SAEJ+G,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAAShqB,KAAK+b,YAAY4N,EAAKC,cAAgB,IAAKe,EAAKxX,EAAI,EAAGwX,EAAKvX,GAEzEuW,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOhrB,KAAK2d,OAC1DiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOhrB,KAAK6d,OACxD0K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,SAGJ+G,EAAIO,UAAY,EAEhBqC,EAASnrB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMrd,KAAKwd,KAAMxd,KAAK2d,OACpEyN,EAASprB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMvd,KAAKwd,KAAMxd,KAAK2d,OACpE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOhY,EAAGgY,EAAO/X,GAC5BmV,EAAIe,OAAO8B,EAAOjY,EAAGiY,EAAOhY,GAC5BmV,EAAI/G,SAEJ2J,EAASnrB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMrd,KAAK0d,KAAM1d,KAAK2d,OACpEyN,EAASprB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMvd,KAAK0d,KAAM1d,KAAK2d,OACpE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOhY,EAAGgY,EAAO/X,GAC5BmV,EAAIe,OAAO8B,EAAOjY,EAAGiY,EAAOhY,GAC5BmV,EAAI/G,SAGJ+G,EAAIO,UAAY,EAEhB6B,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMrd,KAAKwd,KAAMxd,KAAK2d,OAClEiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKqd,KAAMrd,KAAK0d,KAAM1d,KAAK2d,OAChE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,SAEJmJ,EAAO3qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMvd,KAAKwd,KAAMxd,KAAK2d,OAClEiN,EAAK5qB,KAAKkf,eAAe,GAAI7d,GAAQrB,KAAKud,KAAMvd,KAAK0d,KAAM1d,KAAK2d,OAChE4K,EAAIY,YAAcnpB,KAAKke,UACvBqK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAOsB,EAAGzX,EAAGyX,EAAGxX,GACpBmV,EAAI/G,QAGJ,IAAI/F,GAASzb,KAAKyb,MACdA,GAAO/U,OAAS,IAClBmN,EAAU,GAAM7T,KAAKyE,MAAM2O,EAC3B2X,GAAS/qB,KAAKqd,KAAOrd,KAAKud,MAAQ,EAClCyN,EAAQtmB,KAAKwb,IAAIsL,GAAY,EAAIxrB,KAAKwd,KAAO3J,EAAU7T,KAAK0d,KAAO7J,EACnEiX,EAAO9qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOhrB,KAAK2d,OACtDjZ,KAAKwb,IAAe,EAAXsL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OACVrlB,KAAKqb,IAAe,EAAXyL,GAAgB,GAClCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAASvO,EAAQqP,EAAK3X,EAAG2X,EAAK1X,GAIpC,IAAIsI,GAAS1b,KAAK0b,MACdA,GAAOhV,OAAS,IAClBkN,EAAU,GAAM5T,KAAKyE,MAAM0O,EAC3B4X,EAAQrmB,KAAKqb,IAAIyL,GAAY,EAAIxrB,KAAKqd,KAAOzJ,EAAU5T,KAAKud,KAAO3J,EACnEoX,GAAShrB,KAAKwd,KAAOxd,KAAK0d,MAAQ,EAClCoN,EAAO9qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOhrB,KAAK2d,OACtDjZ,KAAKwb,IAAe,EAAXsL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OACVrlB,KAAKqb,IAAe,EAAXyL,GAAgB,GAClCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAEnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAAStO,EAAQoP,EAAK3X,EAAG2X,EAAK1X,GAIpC,IAAIuI,GAAS3b,KAAK2b,MACdA,GAAOjV,OAAS,IAClBwkB,EAAS,GACTH,EAAQrmB,KAAKwb,IAAIsL,GAAY,EAAIxrB,KAAKqd,KAAOrd,KAAKud,KAClDyN,EAAQtmB,KAAKqb,IAAIyL,GAAY,EAAIxrB,KAAKwd,KAAOxd,KAAK0d,KAClDuN,GAASjrB,KAAK2d,KAAO3d,KAAK6d,MAAQ,EAClCiN,EAAO9qB,KAAKkf,eAAe,GAAI7d,GAAQ0pB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYxpB,KAAKke,UACrBqK,EAAIyB,SAASrO,EAAQmP,EAAK3X,EAAI+X,EAAQJ,EAAK1X,KAU/CpS,EAAQ6T,UAAUqU,SAAW,SAAUuC,EAAGC,EAAGC,GAC3C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKtnB,KAAKgB,MAAM+lB,EAAI,IACpBQ,EAAIF,GAAK,EAAIrnB,KAAKwnB,IAAIT,EAAI,GAAK,EAAI,IAE3BO,GACN,IAAK,GACHJ,EAAIG,EAAEF,EAAII,EAAEH,EAAI,CAAE,MACpB,KAAK,GACHF,EAAIK,EAAEJ,EAAIE,EAAED,EAAI,CAAE,MACpB,KAAK,GACHF,EAAI,EAAEC,EAAIE,EAAED,EAAIG,CAAE,MACpB,KAAK,GACHL,EAAI,EAAEC,EAAII,EAAEH,EAAIC,CAAE,MACpB,KAAK,GACHH,EAAIK,EAAEJ,EAAI,EAAEC,EAAIC,CAAE,MACpB,KAAK,GACHH,EAAIG,EAAEF,EAAI,EAAEC,EAAIG,CAAE,MAEpB,SACEL,EAAI,EAAEC,EAAI,EAAEC,EAAI,EAGpB,MAAO,OAAS/f,SAAa,IAAJ6f,GAAW,IAAM7f,SAAa,IAAJ8f,GAAW,IAAM9f,SAAa,IAAJ+f,GAAW,KAO1F9qB,EAAQ6T,UAAUoT,gBAAkB,WAClC,GAEI1U,GACAsV,EACAjgB,EACAujB,EACA3lB,EACA4lB,EACA5C,EACAL,EACAL,EACA9b,EACAC,EACAC,EACAmf,EAdAnL,EAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAe5B,MAAwBpiB,SAApBpG,KAAK+c,YAA4B/c,KAAK+c,WAAWrW,QAAU,GAA/D,CAGA,IAAKF,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAAIse,GAAQ9kB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAG+M,OAC3DwR,EAAS/kB,KAAKsf,4BAA4BwF,EAE9C9kB,MAAK+c,WAAWvW,GAAGse,MAAQA,EAC3B9kB,KAAK+c,WAAWvW,GAAGue,OAASA,CAG5B,IAAIuH,GAActsB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAGwe,OACrEhlB,MAAK+c,WAAWvW,GAAG+lB,KAAOvsB,KAAKoc,gBAAkBkQ,EAAY5lB,UAAY4lB,EAAYzN,EAIvF,GAAI2N,GAAY,SAAmBlmB,EAAGC,GACpC,MAAOA,GAAEgmB,KAAOjmB,EAAEimB,KAIpB,IAFAvsB,KAAK+c,WAAWlF,KAAK2U,GAEjBxsB,KAAKoO,QAAUpN,EAAQkb,MAAMmG,SAC/B,IAAK7b,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAMtC,GALA+M,EAAQvT,KAAK+c,WAAWvW,GACxBqiB,EAAQ7oB,KAAK+c,WAAWvW,GAAGye,WAC3Brc,EAAM5I,KAAK+c,WAAWvW,GAAG0e,SACzBiH,EAAQnsB,KAAK+c,WAAWvW,GAAG2e,WAEb/e,SAAVmN,GAAiCnN,SAAVyiB,GAA+BziB,SAARwC,GAA+BxC,SAAV+lB,EAAqB,CAE1F,GAAInsB,KAAKwc,gBAAkBxc,KAAKuc,WAAY,CAK1C,GAAIkQ,GAAQprB,EAAQqrB,SAASP,EAAMrH,MAAOvR,EAAMuR,OAC5C6H,EAAQtrB,EAAQqrB,SAAS9jB,EAAIkc,MAAO+D,EAAM/D,OAC1C8H,EAAevrB,EAAQwrB,aAAaJ,EAAOE,GAC3CjlB,EAAMklB,EAAalmB,QAGvB0lB,GAAiBQ,EAAa/N,EAAI,MAElCuN,IAAiB,CAGfA,IAEFC,GAAQ9Y,EAAMA,MAAMsL,EAAIgK,EAAMtV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIsN,EAAM5Y,MAAMsL,GAAK,EACvE7R,EAAmE,KAA9D,GAAKqf,EAAOrsB,KAAK2d,MAAQ3d,KAAKyE,MAAMoa,EAAI7e,KAAK0c,eAClDzP,EAAI,EAEAjN,KAAKuc,YACPrP,EAAIxI,KAAKL,IAAI,EAAIuoB,EAAazZ,EAAIzL,EAAM,EAAG,GAC3C8hB,EAAYxpB,KAAKkpB,SAASlc,EAAGC,EAAGC,GAChCic,EAAcK,IAEdtc,EAAI,EACJsc,EAAYxpB,KAAKkpB,SAASlc,EAAGC,EAAGC,GAChCic,EAAcnpB,KAAKke,aAGrBsL,EAAY,OACZL,EAAcnpB,KAAKke,WAErB4K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAO9V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,GACxCmV,EAAIe,OAAOT,EAAM9D,OAAO5R,EAAG0V,EAAM9D,OAAO3R,GACxCmV,EAAIe,OAAO6C,EAAMpH,OAAO5R,EAAGgZ,EAAMpH,OAAO3R,GACxCmV,EAAIe,OAAO1gB,EAAImc,OAAO5R,EAAGvK,EAAImc,OAAO3R,GACpCmV,EAAIkB,YACJlB,EAAIhH,OACJgH,EAAI/G,cAKR,KAAKhb,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IACtC+M,EAAQvT,KAAK+c,WAAWvW,GACxBqiB,EAAQ7oB,KAAK+c,WAAWvW,GAAGye,WAC3Brc,EAAM5I,KAAK+c,WAAWvW,GAAG0e,SAEX9e,SAAVmN,IAEAuV,EADE9oB,KAAKoc,gBACK,GAAK7I,EAAMuR,MAAMjG,EAEjB,IAAM7e,KAAK8c,IAAI+B,EAAI7e,KAAK6c,OAAOkE,iBAIjC3a,SAAVmN,GAAiCnN,SAAVyiB,IAEzBwD,GAAQ9Y,EAAMA,MAAMsL,EAAIgK,EAAMtV,MAAMsL,GAAK,EACzC7R,EAAmE,KAA9D,GAAKqf,EAAOrsB,KAAK2d,MAAQ3d,KAAKyE,MAAMoa,EAAI7e,KAAK0c,eAElD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAcnpB,KAAKkpB,SAASlc,EAAG,EAAG,GACtCub,EAAIa,YACJb,EAAIc,OAAO9V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,GACxCmV,EAAIe,OAAOT,EAAM9D,OAAO5R,EAAG0V,EAAM9D,OAAO3R,GACxCmV,EAAI/G,UAGQpb,SAAVmN,GAA+BnN,SAARwC,IAEzByjB,GAAQ9Y,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC7R,EAAmE,KAA9D,GAAKqf,EAAOrsB,KAAK2d,MAAQ3d,KAAKyE,MAAMoa,EAAI7e,KAAK0c,eAElD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAcnpB,KAAKkpB,SAASlc,EAAG,EAAG,GACtCub,EAAIa,YACJb,EAAIc,OAAO9V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,GACxCmV,EAAIe,OAAO1gB,EAAImc,OAAO5R,EAAGvK,EAAImc,OAAO3R,GACpCmV,EAAI/G,YAUZxgB,EAAQ6T,UAAUuT,eAAiB,WACjC,GAEI5hB,GAFA0a,EAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAG5B,MAAwBpiB,SAApBpG,KAAK+c,YAA4B/c,KAAK+c,WAAWrW,QAAU,GAA/D,CAGA,IAAKF,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAAIse,GAAQ9kB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAG+M,OAC3DwR,EAAS/kB,KAAKsf,4BAA4BwF,EAC9C9kB,MAAK+c,WAAWvW,GAAGse,MAAQA,EAC3B9kB,KAAK+c,WAAWvW,GAAGue,OAASA,CAG5B,IAAIuH,GAActsB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAGwe,OACrEhlB,MAAK+c,WAAWvW,GAAG+lB,KAAOvsB,KAAKoc,gBAAkBkQ,EAAY5lB,UAAY4lB,EAAYzN,EAIvF,GAAI2N,GAAY,SAAmBlmB,EAAGC,GACpC,MAAOA,GAAEgmB,KAAOjmB,EAAEimB,KAEpBvsB,MAAK+c,WAAWlF,KAAK2U,EAGrB,IAAI5D,GAAmC,IAAzB5oB,KAAKihB,MAAME,WACzB,KAAK3a,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAAI+M,GAAQvT,KAAK+c,WAAWvW,EAE5B,IAAIxG,KAAKoO,QAAUpN,EAAQkb,MAAM8F,QAAS,CAGxC,GAAI2I,GAAO3qB,KAAKkf,eAAe3L,EAAMyR,OACrCuD,GAAIO,UAAY,EAChBP,EAAIY,YAAcnpB,KAAKme,UACvBoK,EAAIa,YACJb,EAAIc,OAAOsB,EAAKxX,EAAGwX,EAAKvX,GACxBmV,EAAIe,OAAO/V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,GACxCmV,EAAI/G,SAIN,GAAI9N,EAEFA,GADE1T,KAAKoO,QAAUpN,EAAQkb,MAAMgG,QACxB0G,EAAU,EAAI,EAAIA,GAAWrV,EAAMA,MAAM/O,MAAQxE,KAAK8d,WAAa9d,KAAK+d,SAAW/d,KAAK8d,UAExF8K,CAGT,IAAIkE,EAEFA,GADE9sB,KAAKoc,gBACE1I,GAAQH,EAAMuR,MAAMjG,EAEpBnL,IAAS1T,KAAK8c,IAAI+B,EAAI7e,KAAK6c,OAAOkE,gBAEhC,EAAT+L,IACFA,EAAS,EAGX,IAAI/e,GAAK9B,EAAOyV,CACZ1hB,MAAKoO,QAAUpN,EAAQkb,MAAM+F,UAE/BlU,EAAqE,KAA9D,GAAKwF,EAAMA,MAAM/O,MAAQxE,KAAK8d,UAAY9d,KAAKyE,MAAMD,OAC5DyH,EAAQjM,KAAKkpB,SAASnb,EAAK,EAAG,GAC9B2T,EAAc1hB,KAAKkpB,SAASnb,EAAK,EAAG,KAC3B/N,KAAKoO,QAAUpN,EAAQkb,MAAMgG,SACtCjW,EAAQjM,KAAKoe,SACbsD,EAAc1hB,KAAKqe,iBAGnBtQ,EAA8E,KAAvE,GAAKwF,EAAMA,MAAMsL,EAAI7e,KAAK2d,MAAQ3d,KAAKyE,MAAMoa,EAAI7e,KAAK0c,eAC7DzQ,EAAQjM,KAAKkpB,SAASnb,EAAK,EAAG,GAC9B2T,EAAc1hB,KAAKkpB,SAASnb,EAAK,EAAG,KAItCwa,EAAIO,UAAY,EAChBP,EAAIY,YAAczH,EAClB6G,EAAIiB,UAAYvd,EAChBsc,EAAIa,YACJb,EAAIwE,IAAIxZ,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,EAAG0Z,EAAQ,EAAa,EAAVpoB,KAAKsoB,IAAQ,GAChEzE,EAAIhH,OACJgH,EAAI/G,YAQRxgB,EAAQ6T,UAAUsT,eAAiB,WACjC,GAEI3hB,GAAGymB,EAAGC,EAASC,EAFfjM,EAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAG5B,MAAwBpiB,SAApBpG,KAAK+c,YAA4B/c,KAAK+c,WAAWrW,QAAU,GAA/D,CAGA,IAAKF,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAAIse,GAAQ9kB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAG+M,OAC3DwR,EAAS/kB,KAAKsf,4BAA4BwF,EAC9C9kB,MAAK+c,WAAWvW,GAAGse,MAAQA,EAC3B9kB,KAAK+c,WAAWvW,GAAGue,OAASA,CAG5B,IAAIuH,GAActsB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAGwe,OACrEhlB,MAAK+c,WAAWvW,GAAG+lB,KAAOvsB,KAAKoc,gBAAkBkQ,EAAY5lB,UAAY4lB,EAAYzN,EAIvF,GAAI2N,GAAY,SAAmBlmB,EAAGC,GACpC,MAAOA,GAAEgmB,KAAOjmB,EAAEimB,KAEpBvsB,MAAK+c,WAAWlF,KAAK2U,EAGrB,IAAIY,GAASptB,KAAKge,UAAY,EAC1BqP,EAASrtB,KAAKie,UAAY,CAC9B,KAAKzX,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAGIuH,GAAK9B,EAAOyV,EAHZnO,EAAQvT,KAAK+c,WAAWvW,EAIxBxG,MAAKoO,QAAUpN,EAAQkb,MAAM4F,UAE/B/T,EAAqE,KAA9D,GAAKwF,EAAMA,MAAM/O,MAAQxE,KAAK8d,UAAY9d,KAAKyE,MAAMD,OAC5DyH,EAAQjM,KAAKkpB,SAASnb,EAAK,EAAG,GAC9B2T,EAAc1hB,KAAKkpB,SAASnb,EAAK,EAAG,KAC3B/N,KAAKoO,QAAUpN,EAAQkb,MAAM6F,SACtC9V,EAAQjM,KAAKoe,SACbsD,EAAc1hB,KAAKqe,iBAGnBtQ,EAA8E,KAAvE,GAAKwF,EAAMA,MAAMsL,EAAI7e,KAAK2d,MAAQ3d,KAAKyE,MAAMoa,EAAI7e,KAAK0c,eAC7DzQ,EAAQjM,KAAKkpB,SAASnb,EAAK,EAAG,GAC9B2T,EAAc1hB,KAAKkpB,SAASnb,EAAK,EAAG,KAIlC/N,KAAKoO,QAAUpN,EAAQkb,MAAM6F,UAC/BqL,EAASptB,KAAKge,UAAY,IAAMzK,EAAMA,MAAM/O,MAAQxE,KAAK8d,WAAa9d,KAAK+d,SAAW/d,KAAK8d,UAAY,GAAM,IAC7GuP,EAASrtB,KAAKie,UAAY,IAAM1K,EAAMA,MAAM/O,MAAQxE,KAAK8d,WAAa9d,KAAK+d,SAAW/d,KAAK8d,UAAY,GAAM,IAI/G,IAAIjI,GAAK7V,KACLmf,EAAU5L,EAAMA,MAChB3K,IAAS2K,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQlO,EAAQN,KAAQtL,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQlO,EAAQN,KAAQtL,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQlO,EAAQN,KAAQtL,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQlO,EAAQN,KAC7SmG,IAAYzR,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQrtB,KAAK2d,QAAWpK,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQrtB,KAAK2d,QAAWpK,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQrtB,KAAK2d,QAAWpK,MAAO,GAAIlS,GAAQ8d,EAAQhM,EAAIia,EAAQjO,EAAQ/L,EAAIia,EAAQrtB,KAAK2d,OAGjT/U,GAAIS,QAAQ,SAAUvD,GACpBA,EAAIif,OAASlP,EAAGqJ,eAAepZ,EAAIyN,SAErCyR,EAAO3b,QAAQ,SAAUvD,GACvBA,EAAIif,OAASlP,EAAGqJ,eAAepZ,EAAIyN,QAIrC,IAAI+Z,KAAcH,QAASvkB,EAAK2kB,OAAQlsB,EAAQmsB,IAAIxI,EAAO,GAAGzR,MAAOyR,EAAO,GAAGzR,SAAY4Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIoc,EAAO,GAAIA,EAAO,IAAKuI,OAAQlsB,EAAQmsB,IAAIxI,EAAO,GAAGzR,MAAOyR,EAAO,GAAGzR,SAAY4Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIoc,EAAO,GAAIA,EAAO,IAAKuI,OAAQlsB,EAAQmsB,IAAIxI,EAAO,GAAGzR,MAAOyR,EAAO,GAAGzR,SAAY4Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIoc,EAAO,GAAIA,EAAO,IAAKuI,OAAQlsB,EAAQmsB,IAAIxI,EAAO,GAAGzR,MAAOyR,EAAO,GAAGzR,SAAY4Z,SAAUvkB,EAAI,GAAIA,EAAI,GAAIoc,EAAO,GAAIA,EAAO,IAAKuI,OAAQlsB,EAAQmsB,IAAIxI,EAAO,GAAGzR,MAAOyR,EAAO,GAAGzR,QAI/f,KAHAA,EAAM+Z,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS5mB,OAAQumB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcztB,KAAKqf,2BAA2B6N,EAAQK,OAC1DL,GAAQX,KAAOvsB,KAAKoc,gBAAkBqR,EAAY/mB,UAAY+mB,EAAY5O,EAwB5E,IAjBAyO,EAASzV,KAAK,SAAUvR,EAAGC,GACzB,GAAImnB,GAAOnnB,EAAEgmB,KAAOjmB,EAAEimB,IACtB,OAAImB,GAAaA,EAGbpnB,EAAE6mB,UAAYvkB,EAAY,EAC1BrC,EAAE4mB,UAAYvkB,EAAY,GAGvB,IAIT2f,EAAIO,UAAY,EAChBP,EAAIY,YAAczH,EAClB6G,EAAIiB,UAAYvd,EAEXghB,EAAI,EAAGA,EAAIK,EAAS5mB,OAAQumB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGpI,OAAO5R,EAAGga,EAAQ,GAAGpI,OAAO3R,GAClDmV,EAAIe,OAAO6D,EAAQ,GAAGpI,OAAO5R,EAAGga,EAAQ,GAAGpI,OAAO3R,GAClDmV,EAAIe,OAAO6D,EAAQ,GAAGpI,OAAO5R,EAAGga,EAAQ,GAAGpI,OAAO3R,GAClDmV,EAAIe,OAAO6D,EAAQ,GAAGpI,OAAO5R,EAAGga,EAAQ,GAAGpI,OAAO3R,GAClDmV,EAAIe,OAAO6D,EAAQ,GAAGpI,OAAO5R,EAAGga,EAAQ,GAAGpI,OAAO3R,GAClDmV,EAAIhH,OACJgH,EAAI/G,YASVxgB,EAAQ6T,UAAUqT,gBAAkB,WAClC,GAEI3U,GACA/M,EAHA0a,EAASlhB,KAAKihB,MAAMC,OACpBqH,EAAMrH,EAAOsH,WAAW,KAI5B,MAAwBpiB,SAApBpG,KAAK+c,YAA4B/c,KAAK+c,WAAWrW,QAAU,GAA/D,CAGA,IAAKF,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C,GAAIse,GAAQ9kB,KAAKqf,2BAA2Brf,KAAK+c,WAAWvW,GAAG+M,OAC3DwR,EAAS/kB,KAAKsf,4BAA4BwF,EAE9C9kB,MAAK+c,WAAWvW,GAAGse,MAAQA,EAC3B9kB,KAAK+c,WAAWvW,GAAGue,OAASA,EAc9B,IAVI/kB,KAAK+c,WAAWrW,OAAS,IAC3B6M,EAAQvT,KAAK+c,WAAW,GAExBwL,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAO9V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,IAIrC5M,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IACtC+M,EAAQvT,KAAK+c,WAAWvW,GACxB+hB,EAAIe,OAAO/V,EAAMwR,OAAO5R,EAAGI,EAAMwR,OAAO3R,EAItCpT,MAAK+c,WAAWrW,OAAS,GAC3B6hB,EAAI/G,WASRxgB,EAAQ6T,UAAU8Q,aAAe,SAAUrb,GAWzC,GAVAA,EAAQA,GAASC,OAAOD,MAIpBtK,KAAK2tB,gBACP3tB,KAAK4tB,WAAWtjB,GAIlBtK,KAAK2tB,eAAiBrjB,EAAMujB,MAAwB,IAAhBvjB,EAAMujB,MAA+B,IAAjBvjB,EAAMwjB,OACzD9tB,KAAK2tB,gBAAmB3tB,KAAK+tB,UAAlC,CAGA/tB,KAAKguB,YAAc1P,EAAUhU,GAC7BtK,KAAKiuB,YAAcxP,EAAUnU,GAE7BtK,KAAKkuB,WAAa,GAAIppB,MAAK9E,KAAKiR,OAChCjR,KAAKmuB,SAAW,GAAIrpB,MAAK9E,KAAKkR,KAC9BlR,KAAKouB,iBAAmBpuB,KAAK6c,OAAOyK,iBAEpCtnB,KAAKihB,MAAM7S,MAAMigB,OAAS,MAK1B,IAAIxY,GAAK7V,IACTA,MAAKsuB,YAAc,SAAUhkB,GAC3BuL,EAAG0Y,aAAajkB,IAElBtK,KAAKwuB,UAAY,SAAUlkB,GACzBuL,EAAG+X,WAAWtjB,IAEhB3J,EAAKgJ,iBAAiBgJ,SAAU,YAAakD,EAAGyY,aAChD3tB,EAAKgJ,iBAAiBgJ,SAAU,UAAWkD,EAAG2Y,WAC9C7tB,EAAK0J,eAAeC,KAQtBtJ,EAAQ6T,UAAU0Z,aAAe,SAAUjkB,GACzCA,EAAQA,GAASC,OAAOD,KAGxB,IAAImkB,GAAQ5H,WAAWvI,EAAUhU,IAAUtK,KAAKguB,YAC5CU,EAAQ7H,WAAWpI,EAAUnU,IAAUtK,KAAKiuB,YAE5CU,EAAgB3uB,KAAKouB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAc5uB,KAAKouB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAYpqB,KAAKqb,IAAI8O,EAAY,IAAM,EAAInqB,KAAKsoB,GAIhDtoB,MAAKwnB,IAAIxnB,KAAKqb,IAAI4O,IAAkBG,IACtCH,EAAgBjqB,KAAKqqB,MAAMJ,EAAgBjqB,KAAKsoB,IAAMtoB,KAAKsoB,GAAK,MAE9DtoB,KAAKwnB,IAAIxnB,KAAKwb,IAAIyO,IAAkBG,IACtCH,GAAiBjqB,KAAKqqB,MAAMJ,EAAgBjqB,KAAKsoB,GAAK,IAAO,IAAOtoB,KAAKsoB,GAAK,MAI5EtoB,KAAKwnB,IAAIxnB,KAAKqb,IAAI6O,IAAgBE,IACpCF,EAAclqB,KAAKqqB,MAAMH,EAAclqB,KAAKsoB,IAAMtoB,KAAKsoB,IAErDtoB,KAAKwnB,IAAIxnB,KAAKwb,IAAI0O,IAAgBE,IACpCF,GAAelqB,KAAKqqB,MAAMH,EAAclqB,KAAKsoB,GAAK,IAAO,IAAOtoB,KAAKsoB,IAGvEhtB,KAAK6c,OAAOqK,eAAeyH,EAAeC,GAC1C5uB,KAAKojB,QAGL,IAAI4L,GAAahvB,KAAKqnB,mBACtBrnB,MAAKivB,KAAK,uBAAwBD,GAElCruB,EAAK0J,eAAeC,IAQtBtJ,EAAQ6T,UAAU+Y,WAAa,SAAUtjB,GACvCtK,KAAKihB,MAAM7S,MAAMigB,OAAS,OAC1BruB,KAAK2tB,gBAAiB,EAGtBhtB,EAAKwJ,oBAAoBwI,SAAU,YAAa3S,KAAKsuB,aACrD3tB,EAAKwJ,oBAAoBwI,SAAU,UAAW3S,KAAKwuB,WACnD7tB,EAAK0J,eAAeC,IAOtBtJ,EAAQ6T,UAAUoR,WAAa,SAAU3b,GACvC,GAAI+P,GAAQ,IACR6U,EAAelvB,KAAKihB,MAAMxY,wBAC1B0mB,EAAS7Q,EAAUhU,GAAS4kB,EAAaxmB,KACzC0mB,EAAS3Q,EAAUnU,GAAS4kB,EAAatmB,GAE7C,IAAK5I,KAAKyc,YAAV,CASA,GALIzc,KAAKqvB,gBACPpU,aAAajb,KAAKqvB,gBAIhBrvB,KAAK2tB,eAEP,WADA3tB,MAAKsvB,cAIP,IAAItvB,KAAK4nB,SAAW5nB,KAAK4nB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAYvvB,KAAKwvB,iBAAiBL,EAAQC,EAC1CG,KAAcvvB,KAAK4nB,QAAQ2H,YAEzBA,EACFvvB,KAAKyvB,aAAaF,GAElBvvB,KAAKsvB,oBAGJ,CAEL,GAAIzZ,GAAK7V,IACTA,MAAKqvB,eAAiBnU,WAAW,WAC/BrF,EAAGwZ,eAAiB,IAGpB,IAAIE,GAAY1Z,EAAG2Z,iBAAiBL,EAAQC,EACxCG,IACF1Z,EAAG4Z,aAAaF,IAEjBlV,MAOPrZ,EAAQ6T,UAAUgR,cAAgB,SAAUvb,GAC1CtK,KAAK+tB,WAAY,CAEjB,IAAIlY,GAAK7V,IACTA,MAAK0vB,YAAc,SAAUplB,GAC3BuL,EAAG8Z,aAAarlB,IAElBtK,KAAK4vB,WAAa,SAAUtlB,GAC1BuL,EAAGga,YAAYvlB,IAEjB3J,EAAKgJ,iBAAiBgJ,SAAU,YAAakD,EAAG6Z,aAChD/uB,EAAKgJ,iBAAiBgJ,SAAU,WAAYkD,EAAG+Z,YAE/C5vB,KAAK2lB,aAAarb,IAMpBtJ,EAAQ6T,UAAU8a,aAAe,SAAUrlB,GACzCtK,KAAKuuB,aAAajkB,IAMpBtJ,EAAQ6T,UAAUgb,YAAc,SAAUvlB,GACxCtK,KAAK+tB,WAAY,EAEjBptB,EAAKwJ,oBAAoBwI,SAAU,YAAa3S,KAAK0vB,aACrD/uB,EAAKwJ,oBAAoBwI,SAAU,WAAY3S,KAAK4vB,YAEpD5vB,KAAK4tB,WAAWtjB,IAQlBtJ,EAAQ6T,UAAUkR,SAAW,SAAUzb,GAChCA,IACHA,EAAQC,OAAOD,MAGjB,IAAIwlB,GAAQ,CAcZ,IAbIxlB,EAAMylB,WAERD,EAAQxlB,EAAMylB,WAAa,IAClBzlB,EAAM0lB,SAIfF,GAASxlB,EAAM0lB,OAAS,GAMtBF,EAAO,CACT,GAAIG,GAAYjwB,KAAK6c,OAAOkE,eACxBmP,EAAYD,GAAa,EAAIH,EAAQ,GAEzC9vB,MAAK6c,OAAOuK,aAAa8I,GACzBlwB,KAAKojB,SAELpjB,KAAKsvB,eAIP,GAAIN,GAAahvB,KAAKqnB,mBACtBrnB,MAAKivB,KAAK,uBAAwBD,GAKlCruB,EAAK0J,eAAeC,IAUtBtJ,EAAQ6T,UAAUsb,gBAAkB,SAAU5c,EAAO6c,GAKnD,QAASC,GAAKld,GACZ,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI7M,GAAI8pB,EAAS,GACb7pB,EAAI6pB,EAAS,GACb3vB,EAAI2vB,EAAS,GAMbE,EAAKD,GAAM9pB,EAAE4M,EAAI7M,EAAE6M,IAAMI,EAAMH,EAAI9M,EAAE8M,IAAM7M,EAAE6M,EAAI9M,EAAE8M,IAAMG,EAAMJ,EAAI7M,EAAE6M,IACrEod,EAAKF,GAAM5vB,EAAE0S,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAM3S,EAAE2S,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEqd,EAAKH,GAAM/pB,EAAE6M,EAAI1S,EAAE0S,IAAMI,EAAMH,EAAI3S,EAAE2S,IAAM9M,EAAE8M,EAAI3S,EAAE2S,IAAMG,EAAMJ,EAAI1S,EAAE0S,GAGzE,SAAc,GAANmd,GAAiB,GAANC,GAAWD,GAAMC,GAAc,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GAAc,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAU9GxvB,EAAQ6T,UAAU2a,iBAAmB,SAAUrc,EAAGC,GAChD,GAAI5M,GACAiqB,EAAU,IAEdlB,EAAY,KACRmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAInsB,GAAQ+R,EAAGC,EAE5B,IAAIpT,KAAKoO,QAAUpN,EAAQkb,MAAM2F,KAAO7hB,KAAKoO,QAAUpN,EAAQkb,MAAM4F,UAAY9hB,KAAKoO,QAAUpN,EAAQkb,MAAM6F,QAE5G,IAAKvb,EAAIxG,KAAK+c,WAAWrW,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAChD+oB,EAAYvvB,KAAK+c,WAAWvW,EAC5B,IAAI8mB,GAAWiC,EAAUjC,QACzB,IAAIA,EACF,IAAK,GAAIrgB,GAAIqgB,EAAS5mB,OAAS,EAAGuG,GAAK,EAAGA,IAAK,CAE7C,GAAIigB,GAAUI,EAASrgB,GACnBkgB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGpI,OAAQoI,EAAQ,GAAGpI,OAAQoI,EAAQ,GAAGpI,QAC9D8L,GAAa1D,EAAQ,GAAGpI,OAAQoI,EAAQ,GAAGpI,OAAQoI,EAAQ,GAAGpI,OAClE,IAAI/kB,KAAKmwB,gBAAgB5C,EAAQqD,IAAc5wB,KAAKmwB,gBAAgB5C,EAAQsD,GAE1E,MAAOtB,QAOf,KAAK/oB,EAAI,EAAGA,EAAIxG,KAAK+c,WAAWrW,OAAQF,IAAK,CAC3C+oB,EAAYvvB,KAAK+c,WAAWvW,EAC5B,IAAI+M,GAAQgc,EAAUxK,MACtB,IAAIxR,EAAO,CACT,GAAIud,GAAQpsB,KAAKwnB,IAAI/Y,EAAII,EAAMJ,GAC3B4d,EAAQrsB,KAAKwnB,IAAI9Y,EAAIG,EAAMH,GAC3BmZ,EAAO7nB,KAAKssB,KAAKF,EAAQA,EAAQC,EAAQA,IAExB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAM3B,MAAOmB,IAQT1vB,EAAQ6T,UAAU4a,aAAe,SAAUF,GACzC,GAAIzb,GAASmd,EAAMC,CAEdlxB,MAAK4nB,SAgCR9T,EAAU9T,KAAK4nB,QAAQuJ,IAAIrd,QAC3Bmd,EAAOjxB,KAAK4nB,QAAQuJ,IAAIF,KACxBC,EAAMlxB,KAAK4nB,QAAQuJ,IAAID,MAjCvBpd,EAAUnB,SAASM,cAAc,OACjCa,EAAQ1F,MAAMgX,SAAW,WACzBtR,EAAQ1F,MAAMoX,QAAU,OACxB1R,EAAQ1F,MAAMZ,OAAS,oBACvBsG,EAAQ1F,MAAMnC,MAAQ,UACtB6H,EAAQ1F,MAAMb,WAAa,wBAC3BuG,EAAQ1F,MAAMgjB,aAAe,MAC7Btd,EAAQ1F,MAAMijB,UAAY,qCAE1BJ,EAAOte,SAASM,cAAc,OAC9Bge,EAAK7iB,MAAMgX,SAAW,WACtB6L,EAAK7iB,MAAM8F,OAAS,OACpB+c,EAAK7iB,MAAM6F,MAAQ,IACnBgd,EAAK7iB,MAAMkjB,WAAa,oBAExBJ,EAAMve,SAASM,cAAc,OAC7Bie,EAAI9iB,MAAMgX,SAAW,WACrB8L,EAAI9iB,MAAM8F,OAAS,IACnBgd,EAAI9iB,MAAM6F,MAAQ,IAClBid,EAAI9iB,MAAMZ,OAAS,oBACnB0jB,EAAI9iB,MAAMgjB,aAAe,MAEzBpxB,KAAK4nB,SACH2H,UAAW,KACX4B,KACErd,QAASA,EACTmd,KAAMA,EACNC,IAAKA,KASXlxB,KAAKsvB,eAELtvB,KAAK4nB,QAAQ2H,UAAYA,EACO,kBAArBvvB,MAAKyc,YACd3I,EAAQ2R,UAAYzlB,KAAKyc,YAAY8S,EAAUhc,OAE/CO,EAAQ2R,UAAY,6BAAoC8J,EAAUhc,MAAMJ,EAAI,gCAAuCoc,EAAUhc,MAAMH,EAAI,gCAAuCmc,EAAUhc,MAAMsL,EAAI,qBAGpM/K,EAAQ1F,MAAM1F,KAAO,IACrBoL,EAAQ1F,MAAMxF,IAAM,IACpB5I,KAAKihB,MAAMpO,YAAYiB,GACvB9T,KAAKihB,MAAMpO,YAAYoe,GACvBjxB,KAAKihB,MAAMpO,YAAYqe,EAGvB,IAAIK,GAAezd,EAAQ0d,YACvBC,EAAgB3d,EAAQ4d,aACxBC,EAAaV,EAAKS,aAClBE,EAAWV,EAAIM,YACfK,EAAYX,EAAIQ,aAEhBhpB,EAAO6mB,EAAUxK,OAAO5R,EAAIoe,EAAe,CAC/C7oB,GAAOhE,KAAKL,IAAIK,KAAKJ,IAAIoE,EAAM,IAAK1I,KAAKihB,MAAME,YAAc,GAAKoQ,GAElEN,EAAK7iB,MAAM1F,KAAO6mB,EAAUxK,OAAO5R,EAAI,KACvC8d,EAAK7iB,MAAMxF,IAAM2mB,EAAUxK,OAAO3R,EAAIue,EAAa,KACnD7d,EAAQ1F,MAAM1F,KAAOA,EAAO,KAC5BoL,EAAQ1F,MAAMxF,IAAM2mB,EAAUxK,OAAO3R,EAAIue,EAAaF,EAAgB,KACtEP,EAAI9iB,MAAM1F,KAAO6mB,EAAUxK,OAAO5R,EAAIye,EAAW,EAAI,KACrDV,EAAI9iB,MAAMxF,IAAM2mB,EAAUxK,OAAO3R,EAAIye,EAAY,EAAI,MAOvD7wB,EAAQ6T,UAAUya,aAAe,WAC/B,GAAItvB,KAAK4nB,QAAS,CAChB5nB,KAAK4nB,QAAQ2H,UAAY,IAEzB,KAAK,GAAIxpB,KAAQ/F,MAAK4nB,QAAQuJ,IAC5B,GAAInxB,KAAK4nB,QAAQuJ,IAAInrB,eAAeD,GAAO,CACzC,GAAIyC,GAAOxI,KAAK4nB,QAAQuJ,IAAIprB,EACxByC,IAAQA,EAAKqC,YACfrC,EAAKqC,WAAW1G,YAAYqE,MA+BtC3I,EAAOD,QAAUoB,GAMb,SAASnB,EAAQD,EAASM,GAgB9B,QAASgB,KACPlB,KAAK8xB,YAAc,GAAIzwB,GACvBrB,KAAK+xB,eACL/xB,KAAK+xB,YAAY/K,WAAa,EAC9BhnB,KAAK+xB,YAAY9K,SAAW,EAC5BjnB,KAAKgyB,UAAY,IAEjBhyB,KAAKiyB,eAAiB,GAAI5wB,GAC1BrB,KAAKkyB,eAAiB,GAAI7wB,GAAQ,GAAMqD,KAAKsoB,GAAI,EAAG,GAEpDhtB,KAAKmyB,6BAtBP,GAAI9wB,GAAUnB,EAAoB,GA+BlCgB,GAAO2T,UAAUoK,eAAiB,SAAU9L,EAAGC,EAAGyL,GAChD7e,KAAK8xB,YAAY3e,EAAIA,EACrBnT,KAAK8xB,YAAY1e,EAAIA,EACrBpT,KAAK8xB,YAAYjT,EAAIA,EAErB7e,KAAKmyB,8BAWPjxB,EAAO2T,UAAUqS,eAAiB,SAAUF,EAAYC,GACnC7gB,SAAf4gB,IACFhnB,KAAK+xB,YAAY/K,WAAaA,GAGf5gB,SAAb6gB,IACFjnB,KAAK+xB,YAAY9K,SAAWA,EACxBjnB,KAAK+xB,YAAY9K,SAAW,IAAGjnB,KAAK+xB,YAAY9K,SAAW,GAC3DjnB,KAAK+xB,YAAY9K,SAAW,GAAMviB,KAAKsoB,KAAIhtB,KAAK+xB,YAAY9K,SAAW,GAAMviB,KAAKsoB,MAGrE5mB,SAAf4gB,GAAyC5gB,SAAb6gB,IAC9BjnB,KAAKmyB,8BAQTjxB,EAAO2T,UAAUyS,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAahnB,KAAK+xB,YAAY/K,WAClCoL,EAAInL,SAAWjnB,KAAK+xB,YAAY9K,SAEzBmL,GAOTlxB,EAAO2T,UAAUuS,aAAe,SAAU1gB,GACzBN,SAAXM,IAEJ1G,KAAKgyB,UAAYtrB,EAKb1G,KAAKgyB,UAAY,MAAMhyB,KAAKgyB,UAAY,KACxChyB,KAAKgyB,UAAY,IAAGhyB,KAAKgyB,UAAY,GAEzChyB,KAAKmyB,+BAOPjxB,EAAO2T,UAAUkM,aAAe,WAC9B,MAAO/gB,MAAKgyB,WAOd9wB,EAAO2T,UAAU8K,kBAAoB,WACnC,MAAO3f,MAAKiyB,gBAOd/wB,EAAO2T,UAAUmL,kBAAoB,WACnC,MAAOhgB,MAAKkyB,gBAOdhxB,EAAO2T,UAAUsd,2BAA6B,WAE5CnyB,KAAKiyB,eAAe9e,EAAInT,KAAK8xB,YAAY3e,EAAInT,KAAKgyB,UAAYttB,KAAKqb,IAAI/f,KAAK+xB,YAAY/K,YAActiB,KAAKwb,IAAIlgB,KAAK+xB,YAAY9K,UAChIjnB,KAAKiyB,eAAe7e,EAAIpT,KAAK8xB,YAAY1e,EAAIpT,KAAKgyB,UAAYttB,KAAKwb,IAAIlgB,KAAK+xB,YAAY/K,YAActiB,KAAKwb,IAAIlgB,KAAK+xB,YAAY9K,UAChIjnB,KAAKiyB,eAAepT,EAAI7e,KAAK8xB,YAAYjT,EAAI7e,KAAKgyB,UAAYttB,KAAKqb,IAAI/f,KAAK+xB,YAAY9K,UAGxFjnB,KAAKkyB,eAAe/e,EAAIzO,KAAKsoB,GAAK,EAAIhtB,KAAK+xB,YAAY9K,SACvDjnB,KAAKkyB,eAAe9e,EAAI,EACxBpT,KAAKkyB,eAAerT,GAAK7e,KAAK+xB,YAAY/K,YAG5CnnB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAa9B,QAASiB,GAAOiT,EAAMsO,EAAQ2P,GAC5BryB,KAAKoU,KAAOA,EACZpU,KAAK0iB,OAASA,EACd1iB,KAAKqyB,MAAQA,EAEbryB,KAAKmJ,MAAQ/C,OACbpG,KAAKwE,MAAQ4B,OAGbpG,KAAKyY,OAAS4Z,EAAM1P,kBAAkBvO,EAAKwC,MAAO5W,KAAK0iB;AAGvD1iB,KAAKyY,OAAOZ,KAAK,SAAUvR,EAAGC,GAC5B,MAAOD,GAAIC,EAAI,EAAQA,EAAJD,EAAQ,GAAK,IAG9BtG,KAAKyY,OAAO/R,OAAS,GACvB1G,KAAKsqB,YAAY,GAInBtqB,KAAK+c,cAEL/c,KAAKM,QAAS,EACdN,KAAKsyB,eAAiBlsB,OAElBisB,EAAMzV,kBACR5c,KAAKM,QAAS,EACdN,KAAKuyB,oBAELvyB,KAAKM,QAAS,EAvClB,GAAIQ,GAAWZ,EAAoB,EA+CnCiB,GAAO0T,UAAU2d,SAAW,WAC1B,MAAOxyB,MAAKM,QAOda,EAAO0T,UAAU4d,kBAAoB,WAInC,IAHA,GAAI/qB,GAAM1H,KAAKyY,OAAO/R,OAElBF,EAAI,EACDxG,KAAK+c,WAAWvW,IACrBA,GAGF,OAAO9B,MAAKqqB,MAAMvoB,EAAIkB,EAAM,MAO9BvG,EAAO0T,UAAU4V,SAAW,WAC1B,MAAOzqB,MAAKqyB,MAAMrW,aAOpB7a,EAAO0T,UAAU6d,UAAY,WAC3B,MAAO1yB,MAAK0iB,QAOdvhB,EAAO0T,UAAU6V,iBAAmB,WAClC,MAAmBtkB,UAAfpG,KAAKmJ,MAA4B/C,OAE9BpG,KAAKyY,OAAOzY,KAAKmJ,QAO1BhI,EAAO0T,UAAU8d,UAAY,WAC3B,MAAO3yB,MAAKyY,QAQdtX,EAAO0T,UAAUyB,SAAW,SAAUnN,GACpC,GAAIA,GAASnJ,KAAKyY,OAAO/R,OAAQ,KAAM,2BAEvC,OAAO1G,MAAKyY,OAAOtP,IAQrBhI,EAAO0T,UAAU4P,eAAiB,SAAUtb,GAG1C,GAFc/C,SAAV+C,IAAqBA,EAAQnJ,KAAKmJ,OAExB/C,SAAV+C,EAAqB,QAEzB,IAAI4T,EACJ,IAAI/c,KAAK+c,WAAW5T,GAClB4T,EAAa/c,KAAK+c,WAAW5T,OACxB,CACL,GAAI4F,KACJA,GAAE2T,OAAS1iB,KAAK0iB,OAChB3T,EAAEvK,MAAQxE,KAAKyY,OAAOtP,EAEtB,IAAIypB,GAAW,GAAI9xB,GAASd,KAAKoU,MAAQiB,OAAQ,SAAgB3E,GAC7D,MAAOA,GAAK3B,EAAE2T,SAAW3T,EAAEvK,SACxBoS,KACPmG,GAAa/c,KAAKqyB,MAAM5N,eAAemO,GAEvC5yB,KAAK+c,WAAW5T,GAAS4T,EAG3B,MAAOA,IAMT5b,EAAO0T,UAAUsO,kBAAoB,SAAU7Z,GAC7CtJ,KAAKsyB,eAAiBhpB,GAQxBnI,EAAO0T,UAAUyV,YAAc,SAAUnhB,GACvC,GAAIA,GAASnJ,KAAKyY,OAAO/R,OAAQ,KAAM,2BAEvC1G,MAAKmJ,MAAQA,EACbnJ,KAAKwE,MAAQxE,KAAKyY,OAAOtP,IAO3BhI,EAAO0T,UAAU0d,iBAAmB,SAAUppB,GAC9B/C,SAAV+C,IAAqBA,EAAQ,EAEjC,IAAI8X,GAAQjhB,KAAKqyB,MAAMpR,KAEvB,IAAI9X,EAAQnJ,KAAKyY,OAAO/R,OAAQ,CAC9B,CAAqB1G,KAAKykB,eAAetb,GAIlB/C,SAAnB6a,EAAM4R,WACR5R,EAAM4R,SAAWlgB,SAASM,cAAc,OACxCgO,EAAM4R,SAASzkB,MAAMgX,SAAW,WAChCnE,EAAM4R,SAASzkB,MAAMnC,MAAQ,OAC7BgV,EAAMpO,YAAYoO,EAAM4R,UAE1B,IAAIA,GAAW7yB,KAAKyyB,mBACpBxR,GAAM4R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE5R,EAAM4R,SAASzkB,MAAM4W,OAAS,OAC9B/D,EAAM4R,SAASzkB,MAAM1F,KAAO,MAE5B,IAAImN,GAAK7V,IACTkb,YAAW,WACTrF,EAAG0c,iBAAiBppB,EAAQ,IAC3B,IACHnJ,KAAKM,QAAS,MAEdN,MAAKM,QAAS,EAGS8F,SAAnB6a,EAAM4R,WACR5R,EAAM9c,YAAY8c,EAAM4R,UACxB5R,EAAM4R,SAAWzsB,QAGfpG,KAAKsyB,gBAAgBtyB,KAAKsyB,kBAIlCzyB,EAAOD,QAAUuB,GAIb,SAAStB,EAAQD,EAASM,GAS9B,QAASkB,GAAQ+R,EAAGC,GAClBpT,KAAKmT,EAAU/M,SAAN+M,EAAkBA,EAAI,EAC/BnT,KAAKoT,EAAUhN,SAANgN,EAAkBA,EAAI,EAGjCvT,EAAOD,QAAUwB,GAIb,SAASvB,EAAQD,EAASM,GAU9B,QAASmB,GAAQ8R,EAAGC,EAAGyL,GACrB7e,KAAKmT,EAAU/M,SAAN+M,EAAkBA,EAAI,EAC/BnT,KAAKoT,EAAUhN,SAANgN,EAAkBA,EAAI,EAC/BpT,KAAK6e,EAAUzY,SAANyY,EAAkBA,EAAI,EASjCxd,EAAQqrB,SAAW,SAAUpmB,EAAGC,GAC9B,GAAIusB,GAAM,GAAIzxB,EAId,OAHAyxB,GAAI3f,EAAI7M,EAAE6M,EAAI5M,EAAE4M,EAChB2f,EAAI1f,EAAI9M,EAAE8M,EAAI7M,EAAE6M,EAChB0f,EAAIjU,EAAIvY,EAAEuY,EAAItY,EAAEsY,EACTiU,GASTzxB,EAAQsT,IAAM,SAAUrO,EAAGC,GACzB,GAAIwsB,GAAM,GAAI1xB,EAId,OAHA0xB,GAAI5f,EAAI7M,EAAE6M,EAAI5M,EAAE4M,EAChB4f,EAAI3f,EAAI9M,EAAE8M,EAAI7M,EAAE6M,EAChB2f,EAAIlU,EAAIvY,EAAEuY,EAAItY,EAAEsY,EACTkU,GAST1xB,EAAQmsB,IAAM,SAAUlnB,EAAGC,GACzB,MAAO,IAAIlF,IAASiF,EAAE6M,EAAI5M,EAAE4M,GAAK,GAAI7M,EAAE8M,EAAI7M,EAAE6M,GAAK,GAAI9M,EAAEuY,EAAItY,EAAEsY,GAAK,IAUrExd,EAAQwrB,aAAe,SAAUvmB,EAAGC,GAClC,GAAIqmB,GAAe,GAAIvrB,EAMvB,OAJAurB,GAAazZ,EAAI7M,EAAE8M,EAAI7M,EAAEsY,EAAIvY,EAAEuY,EAAItY,EAAE6M,EACrCwZ,EAAaxZ,EAAI9M,EAAEuY,EAAItY,EAAE4M,EAAI7M,EAAE6M,EAAI5M,EAAEsY,EACrC+N,EAAa/N,EAAIvY,EAAE6M,EAAI5M,EAAE6M,EAAI9M,EAAE8M,EAAI7M,EAAE4M,EAE9ByZ,GAOTvrB,EAAQwT,UAAUnO,OAAS,WACzB,MAAOhC,MAAKssB,KAAKhxB,KAAKmT,EAAInT,KAAKmT,EAAInT,KAAKoT,EAAIpT,KAAKoT,EAAIpT,KAAK6e,EAAI7e,KAAK6e,IAGrEhf,EAAOD,QAAUyB,GAIb,SAASxB,EAAQD,EAASM,GAe9B,QAASoB,GAAO6Z,EAAWrL,GACzB,GAAkB1J,SAAd+U,EACF,KAAM,qCAKR,IAHAnb,KAAKmb,UAAYA,EACjBnb,KAAKiqB,QAAUna,GAA8B1J,QAAnB0J,EAAQma,QAAuBna,EAAQma,SAAU,EAEvEjqB,KAAKiqB,QAAS,CAChBjqB,KAAKihB,MAAQtO,SAASM,cAAc,OAEpCjT,KAAKihB,MAAM7S,MAAM6F,MAAQ,OACzBjU,KAAKihB,MAAM7S,MAAMgX,SAAW,WAC5BplB,KAAKmb,UAAUtI,YAAY7S,KAAKihB,OAEhCjhB,KAAKihB,MAAM+R,KAAOrgB,SAASM,cAAc,SACzCjT,KAAKihB,MAAM+R,KAAKprB,KAAO,SACvB5H,KAAKihB,MAAM+R,KAAKxuB,MAAQ,OACxBxE,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAM+R,MAElChzB,KAAKihB,MAAMuF,KAAO7T,SAASM,cAAc,SACzCjT,KAAKihB,MAAMuF,KAAK5e,KAAO,SACvB5H,KAAKihB,MAAMuF,KAAKhiB,MAAQ,OACxBxE,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAMuF,MAElCxmB,KAAKihB,MAAM4I,KAAOlX,SAASM,cAAc,SACzCjT,KAAKihB,MAAM4I,KAAKjiB,KAAO,SACvB5H,KAAKihB,MAAM4I,KAAKrlB,MAAQ,OACxBxE,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAM4I,MAElC7pB,KAAKihB,MAAMgS,IAAMtgB,SAASM,cAAc,SACxCjT,KAAKihB,MAAMgS,IAAIrrB,KAAO,SACtB5H,KAAKihB,MAAMgS,IAAI7kB,MAAMgX,SAAW,WAChCplB,KAAKihB,MAAMgS,IAAI7kB,MAAMZ,OAAS,gBAC9BxN,KAAKihB,MAAMgS,IAAI7kB,MAAM6F,MAAQ,QAC7BjU,KAAKihB,MAAMgS,IAAI7kB,MAAM8F,OAAS,MAC9BlU,KAAKihB,MAAMgS,IAAI7kB,MAAMgjB,aAAe,MACpCpxB,KAAKihB,MAAMgS,IAAI7kB,MAAM8kB,gBAAkB,MACvClzB,KAAKihB,MAAMgS,IAAI7kB,MAAMZ,OAAS,oBAC9BxN,KAAKihB,MAAMgS,IAAI7kB,MAAMkT,gBAAkB,UACvCthB,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAMgS,KAElCjzB,KAAKihB,MAAMkS,MAAQxgB,SAASM,cAAc,SAC1CjT,KAAKihB,MAAMkS,MAAMvrB,KAAO,SACxB5H,KAAKihB,MAAMkS,MAAM/kB,MAAMkN,OAAS,MAChCtb,KAAKihB,MAAMkS,MAAM3uB,MAAQ,IACzBxE,KAAKihB,MAAMkS,MAAM/kB,MAAMgX,SAAW,WAClCplB,KAAKihB,MAAMkS,MAAM/kB,MAAM1F,KAAO,SAC9B1I,KAAKihB,MAAMpO,YAAY7S,KAAKihB,MAAMkS,MAGlC,IAAItd,GAAK7V,IACTA,MAAKihB,MAAMkS,MAAMzN,YAAc,SAAUpb,GACvCuL,EAAG8P,aAAarb,IAElBtK,KAAKihB,MAAM+R,KAAKI,QAAU,SAAU9oB,GAClCuL,EAAGmd,KAAK1oB,IAEVtK,KAAKihB,MAAMuF,KAAK4M,QAAU,SAAU9oB,GAClCuL,EAAGwd,WAAW/oB,IAEhBtK,KAAKihB,MAAM4I,KAAKuJ,QAAU,SAAU9oB,GAClCuL,EAAGgU,KAAKvf,IAIZtK,KAAKszB,iBAAmBltB,OAExBpG,KAAKyY,UACLzY,KAAKmJ,MAAQ/C,OAEbpG,KAAKuzB,YAAcntB,OACnBpG,KAAKwzB,aAAe,IACpBxzB,KAAKyzB,UAAW,EAnFlB,GAAI9yB,GAAOT,EAAoB,EAyF/BoB,GAAOuT,UAAUme,KAAO,WACtB,GAAI7pB,GAAQnJ,KAAKqqB,UACblhB,GAAQ,IACVA,IACAnJ,KAAK0zB,SAASvqB,KAOlB7H,EAAOuT,UAAUgV,KAAO,WACtB,GAAI1gB,GAAQnJ,KAAKqqB,UACblhB,GAAQnJ,KAAKyY,OAAO/R,OAAS,IAC/ByC,IACAnJ,KAAK0zB,SAASvqB,KAOlB7H,EAAOuT,UAAU8e,SAAW,WAC1B,GAAI1iB,GAAQ,GAAInM,MAEZqE,EAAQnJ,KAAKqqB,UACblhB,GAAQnJ,KAAKyY,OAAO/R,OAAS,GAC/ByC,IACAnJ,KAAK0zB,SAASvqB,IACLnJ,KAAKyzB,WAEdtqB,EAAQ,EACRnJ,KAAK0zB,SAASvqB,GAGhB,IAAI+H,GAAM,GAAIpM,MACV4oB,EAAOxc,EAAMD,EAIb2iB,EAAWlvB,KAAKJ,IAAItE,KAAKwzB,aAAe9F,EAAM,GAG9C7X,EAAK7V,IACTA,MAAKuzB,YAAcrY,WAAW,WAC5BrF,EAAG8d,YACFC,IAMLtyB,EAAOuT,UAAUwe,WAAa,WACHjtB,SAArBpG,KAAKuzB,YACPvzB,KAAKwmB,OAELxmB,KAAK0mB,QAOTplB,EAAOuT,UAAU2R,KAAO,WAElBxmB,KAAKuzB,cAETvzB,KAAK2zB,WAED3zB,KAAKihB,QACPjhB,KAAKihB,MAAMuF,KAAKhiB,MAAQ,UAO5BlD,EAAOuT,UAAU6R,KAAO,WACtBmN,cAAc7zB,KAAKuzB,aACnBvzB,KAAKuzB,YAAcntB,OAEfpG,KAAKihB,QACPjhB,KAAKihB,MAAMuF,KAAKhiB,MAAQ,SAQ5BlD,EAAOuT,UAAU0V,oBAAsB,SAAUjhB,GAC/CtJ,KAAKszB,iBAAmBhqB,GAO1BhI,EAAOuT,UAAUsV,gBAAkB,SAAUyJ,GAC3C5zB,KAAKwzB,aAAeI,GAOtBtyB,EAAOuT,UAAUif,gBAAkB,SAAUF,GAC3C,MAAO5zB,MAAKwzB,cASdlyB,EAAOuT,UAAUkf,YAAc,SAAUC,GACvCh0B,KAAKyzB,SAAWO,GAMlB1yB,EAAOuT,UAAUof,SAAW,WACI7tB,SAA1BpG,KAAKszB,kBACPtzB,KAAKszB,oBAOThyB,EAAOuT,UAAUuO,OAAS,WACxB,GAAIpjB,KAAKihB,MAAO,CAEdjhB,KAAKihB,MAAMgS,IAAI7kB,MAAMxF,IAAM5I,KAAKihB,MAAMoF,aAAe,EAAIrmB,KAAKihB,MAAMgS,IAAIvB,aAAe,EAAI,KAC3F1xB,KAAKihB,MAAMgS,IAAI7kB,MAAM6F,MAAQjU,KAAKihB,MAAME,YAAcnhB,KAAKihB,MAAM+R,KAAK7R,YAAcnhB,KAAKihB,MAAMuF,KAAKrF,YAAcnhB,KAAKihB,MAAM4I,KAAK1I,YAAc,GAAK,IAGrJ,IAAIzY,GAAO1I,KAAKk0B,YAAYl0B,KAAKmJ,MACjCnJ,MAAKihB,MAAMkS,MAAM/kB,MAAM1F,KAAOA,EAAO,OAQzCpH,EAAOuT,UAAUqV,UAAY,SAAUzR,GACrCzY,KAAKyY,OAASA,EAEVzY,KAAKyY,OAAO/R,OAAS,EAAG1G,KAAK0zB,SAAS,GAAQ1zB,KAAKmJ,MAAQ/C,QAOjE9E,EAAOuT,UAAU6e,SAAW,SAAUvqB,GACpC,KAAIA,EAAQnJ,KAAKyY,OAAO/R,QAMtB,KAAM,2BALN1G,MAAKmJ,MAAQA,EAEbnJ,KAAKojB,SACLpjB,KAAKi0B,YAUT3yB,EAAOuT,UAAUwV,SAAW,WAC1B,MAAOrqB,MAAKmJ,OAOd7H,EAAOuT,UAAU+B,IAAM,WACrB,MAAO5W,MAAKyY,OAAOzY,KAAKmJ,QAG1B7H,EAAOuT,UAAU8Q,aAAe,SAAUrb,GAExC,GAAIqjB,GAAiBrjB,EAAMujB,MAAwB,IAAhBvjB,EAAMujB,MAA+B,IAAjBvjB,EAAMwjB,MAC7D,IAAKH,EAAL,CAEA3tB,KAAKm0B,aAAe7pB,EAAMiU,QAC1Bve,KAAKo0B,YAAcvN,WAAW7mB,KAAKihB,MAAMkS,MAAM/kB,MAAM1F,MAErD1I,KAAKihB,MAAM7S,MAAMigB,OAAS,MAK1B,IAAIxY,GAAK7V,IACTA,MAAKsuB,YAAc,SAAUhkB,GAC3BuL,EAAG0Y,aAAajkB,IAElBtK,KAAKwuB,UAAY,SAAUlkB,GACzBuL,EAAG+X,WAAWtjB,IAEhB3J,EAAKgJ,iBAAiBgJ,SAAU,YAAa3S,KAAKsuB,aAClD3tB,EAAKgJ,iBAAiBgJ,SAAU,UAAW3S,KAAKwuB,WAChD7tB,EAAK0J,eAAeC,KAGtBhJ,EAAOuT,UAAUwf,YAAc,SAAU3rB,GACvC,GAAIuL,GAAQ4S,WAAW7mB,KAAKihB,MAAMgS,IAAI7kB,MAAM6F,OAASjU,KAAKihB,MAAMkS,MAAMhS,YAAc,GAChFhO,EAAIzK,EAAO,EAEXS,EAAQzE,KAAKqqB,MAAM5b,EAAIc,GAASjU,KAAKyY,OAAO/R,OAAS,GAIzD,OAHY,GAARyC,IAAWA,EAAQ,GACnBA,EAAQnJ,KAAKyY,OAAO/R,OAAS,IAAGyC,EAAQnJ,KAAKyY,OAAO/R,OAAS,GAE1DyC,GAGT7H,EAAOuT,UAAUqf,YAAc,SAAU/qB,GACvC,GAAI8K,GAAQ4S,WAAW7mB,KAAKihB,MAAMgS,IAAI7kB,MAAM6F,OAASjU,KAAKihB,MAAMkS,MAAMhS,YAAc,GAEhFhO,EAAIhK,GAASnJ,KAAKyY,OAAO/R,OAAS,GAAKuN,EACvCvL,EAAOyK,EAAI,CAEf,OAAOzK,IAGTpH,EAAOuT,UAAU0Z,aAAe,SAAUjkB,GACxC,GAAIojB,GAAOpjB,EAAMiU,QAAUve,KAAKm0B,aAC5BhhB,EAAInT,KAAKo0B,YAAc1G,EAEvBvkB,EAAQnJ,KAAKq0B,YAAYlhB,EAE7BnT,MAAK0zB,SAASvqB,GAEdxI,EAAK0J,kBAGP/I,EAAOuT,UAAU+Y,WAAa,SAAUtjB,GACtCtK,KAAKihB,MAAM7S,MAAMigB,OAAS,OAG1B1tB,EAAKwJ,oBAAoBwI,SAAU,YAAa3S,KAAKsuB,aACrD3tB,EAAKwJ,oBAAoBwI,SAAU,UAAW3S,KAAKwuB,WAEnD7tB,EAAK0J,kBAGPxK,EAAOD,QAAU0B,GAIb,SAASzB,EAAQD,EAASM,GA6B9B,QAASqB,GAAW0P,EAAOC,EAAKyY,EAAMkB,GAEpC7qB,KAAKs0B,OAAS,EACdt0B,KAAKu0B,KAAO,EACZv0B,KAAKw0B,MAAQ,EACbx0B,KAAK6qB,YAAa,EAClB7qB,KAAKy0B,UAAY,EAEjBz0B,KAAK00B,SAAW,EAChB10B,KAAK20B,SAAS1jB,EAAOC,EAAKyY,EAAMkB,GAYlCtpB,EAAWsT,UAAU8f,SAAW,SAAU1jB,EAAOC,EAAKyY,EAAMkB,GAC1D7qB,KAAKs0B,OAASrjB,EAAQA,EAAQ,EAC9BjR,KAAKu0B,KAAOrjB,EAAMA,EAAM,EAExBlR,KAAK40B,QAAQjL,EAAMkB,IASrBtpB,EAAWsT,UAAU+f,QAAU,SAAUjL,EAAMkB,GAChCzkB,SAATujB,GAA8B,GAARA,IAEPvjB,SAAfykB,IAA0B7qB,KAAK6qB,WAAaA,GAE5C7qB,KAAK6qB,cAAe,EAAM7qB,KAAKw0B,MAAQjzB,EAAWszB,oBAAoBlL,GAAW3pB,KAAKw0B,MAAQ7K,IAUpGpoB,EAAWszB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAe3hB,GACzB,MAAOzO,MAAKqwB,IAAI5hB,GAAKzO,KAAKswB,MAIxBC,EAAQvwB,KAAKwwB,IAAI,GAAIxwB,KAAKqqB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAIzwB,KAAKwwB,IAAI,GAAIxwB,KAAKqqB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAI1wB,KAAKwwB,IAAI,GAAIxwB,KAAKqqB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIvwB,MAAKwnB,IAAIiJ,EAAQxL,IAASjlB,KAAKwnB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEzwB,KAAKwnB,IAAIkJ,EAAQzL,IAASjlB,KAAKwnB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOTtpB,EAAWsT,UAAU+U,WAAa,WAChC,MAAO/C,YAAW7mB,KAAK00B,SAASW,YAAYr1B,KAAKy0B,aAOnDlzB,EAAWsT,UAAUygB,QAAU,WAC7B,MAAOt1B,MAAKw0B,OAOdjzB,EAAWsT,UAAU5D,MAAQ,WAC3BjR,KAAK00B,SAAW10B,KAAKs0B,OAASt0B,KAAKs0B,OAASt0B,KAAKw0B,OAMnDjzB,EAAWsT,UAAUgV,KAAO,WAC1B7pB,KAAK00B,UAAY10B,KAAKw0B,OAOxBjzB,EAAWsT,UAAU3D,IAAM,WACzB,MAAOlR,MAAK00B,SAAW10B,KAAKu0B,MAG9B10B,EAAOD,QAAU2B,GAIb,SAAS1B,EAAQD,EAASM,GAyB9B,QAASsB,GAAS2Z,EAAWlZ,EAAOszB,EAAQzlB,GAC1C,KAAM9P,eAAgBwB,IACpB,KAAM,IAAI4Z,aAAY,mDAIxB,MAAMrU,MAAMC,QAAQuuB,IAAWA,YAAkB10B,IAAW00B,YAAkBz0B,KAAay0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB1lB,CACpBA,GAAUylB,EACVA,EAASC,EAGX,GAAI3f,GAAK7V,IACTA,MAAKy1B,gBACHxkB,MAAO,KACPC,IAAK,KAELwkB,YAAY,EAEZC,YAAa,SACb1hB,MAAO,KACPC,OAAQ,KACR0hB,UAAW,KACXC,UAAW,MAEb71B,KAAK8P,QAAUnP,EAAK0G,cAAerH,KAAKy1B,gBAGxCz1B,KAAK81B,QAAQ3a,GAGbnb,KAAKgC,cAELhC,KAAK+1B,MACH5E,IAAKnxB,KAAKmxB,IACV6E,SAAUh2B,KAAK8G,MACfmvB,SACEhhB,GAAIjV,KAAKiV,GAAGihB,KAAKl2B,MACjBoV,IAAKpV,KAAKoV,IAAI8gB,KAAKl2B,MACnBivB,KAAMjvB,KAAKivB,KAAKiH,KAAKl2B,OAEvBm2B,eACAx1B,MACEy1B,SAAU,WACR,MAAOvgB,GAAGwgB,SAAS1M,KAAKllB,OAE1B6wB,QAAS,WACP,MAAOzf,GAAGwgB,SAAS1M,KAAKA,MAG1B2M,SAAUzgB,EAAG0gB,UAAUL,KAAKrgB,GAC5B2gB,eAAgB3gB,EAAG4gB,gBAAgBP,KAAKrgB,GACxC6gB,OAAQ7gB,EAAG8gB,QAAQT,KAAKrgB,GACxB+gB,aAAc/gB,EAAGghB,cAAcX,KAAKrgB,KAKxC7V,KAAK82B,MAAQ,GAAIj1B,GAAM7B,KAAK+1B,MAC5B/1B,KAAKgC,WAAWwF,KAAKxH,KAAK82B,OAC1B92B,KAAK+1B,KAAKe,MAAQ92B,KAAK82B,MAGvB92B,KAAKq2B,SAAW,GAAIpzB,GAASjD,KAAK+1B,MAClC/1B,KAAK+2B,UAAY,KACjB/2B,KAAKgC,WAAWwF,KAAKxH,KAAKq2B,UAG1Br2B,KAAKg3B,YAAc,GAAIx0B,GAAYxC,KAAK+1B,MACxC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKg3B,aAI1Bh3B,KAAKi3B,WAAa,GAAIx0B,GAAWzC,KAAK+1B,MACtC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKi3B,YAG1Bj3B,KAAKk3B,QAAU,GAAIp0B,GAAQ9C,KAAK+1B,MAChC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKk3B,SAE1Bl3B,KAAKm3B,UAAY,KACjBn3B,KAAKo3B,WAAa,KAElBp3B,KAAKiV,GAAG,MAAO,SAAU3K,GACvBuL,EAAGoZ,KAAK,QAASpZ,EAAGwhB,mBAAmB/sB,MAEzCtK,KAAKiV,GAAG,YAAa,SAAU3K,GAC7BuL,EAAGoZ,KAAK,cAAepZ,EAAGwhB,mBAAmB/sB,MAE/CtK,KAAKmxB,IAAIzxB,KAAK43B,cAAgB,SAAUhtB,GACtCuL,EAAGoZ,KAAK,cAAepZ,EAAGwhB,mBAAmB/sB,KAI3CwF,GACF9P,KAAK4U,WAAW9E,GAIdylB,GACFv1B,KAAKu3B,UAAUhC,GAIbtzB,EACFjC,KAAKw3B,SAASv1B,GAEdjC,KAAKy3B,UAhIT,GAEI92B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bw3B,EAAOx3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA2HlCsB,GAASqT,UAAY,GAAI6iB,GAOzBl2B,EAASqT,UAAUuO,OAAS,WAC1BpjB,KAAKk3B,SAAWl3B,KAAKk3B,QAAQS,WAAYC,cAAc,IACvD53B,KAAKy3B,WAOPj2B,EAASqT,UAAU2iB,SAAW,SAAUv1B,GACtC,GAGI41B,GAHAC,EAAgC,MAAlB93B,KAAKm3B,SAsBvB,IAfEU,EAHG51B,EAEMA,YAAiBpB,IAAWoB,YAAiBnB,GACzCmB,EAGA,GAAIpB,GAAQoB,GACvB2F,MACEqJ,MAAO,OACPC,IAAK,UARI,KAcflR,KAAKm3B,UAAYU,EACjB73B,KAAKk3B,SAAWl3B,KAAKk3B,QAAQM,SAASK,GAElCC,EACF,GAA0B1xB,QAAtBpG,KAAK8P,QAAQmB,OAA0C7K,QAApBpG,KAAK8P,QAAQoB,IAAkB,CACpE,GAA0B9K,QAAtBpG,KAAK8P,QAAQmB,OAA0C7K,QAApBpG,KAAK8P,QAAQoB,IAClD,GAAI6mB,GAAY/3B,KAAKg4B,eAGvB,IAAI/mB,GAA8B7K,QAAtBpG,KAAK8P,QAAQmB,MAAqBjR,KAAK8P,QAAQmB,MAAQ8mB,EAAU9mB,MACzEC,EAA0B9K,QAApBpG,KAAK8P,QAAQoB,IAAmBlR,KAAK8P,QAAQoB,IAAM6mB,EAAU7mB,GAEvElR,MAAKi4B,UAAUhnB,EAAOC,GAAOgnB,SAAS,QAEtCl4B,MAAKm4B,KAAMD,SAAS,KAS1B12B,EAASqT,UAAU0iB,UAAY,SAAUhC,GAEvC,GAAIsC,EAIFA,GAHGtC,EAEMA,YAAkB10B,IAAW00B,YAAkBz0B,GAC3Cy0B,EAGA,GAAI10B,GAAQ00B,GALZ,KAQfv1B,KAAKo3B,WAAaS,EAClB73B,KAAKk3B,QAAQK,UAAUM,IAmBzBr2B,EAASqT,UAAUujB,aAAe,SAAUthB,EAAKhH,GAC/C9P,KAAKk3B,SAAWl3B,KAAKk3B,QAAQkB,aAAathB,GAEtChH,GAAWA,EAAQuoB,OACrBr4B,KAAKq4B,MAAMvhB,EAAKhH,IAQpBtO,EAASqT,UAAUyjB,aAAe,WAChC,MAAOt4B,MAAKk3B,SAAWl3B,KAAKk3B,QAAQoB,oBAetC92B,EAASqT,UAAUwjB,MAAQ,SAAUh4B,EAAIyP,GACvC,GAAK9P,KAAKm3B,WAAmB/wB,QAAN/F,EAAvB,CAEA,GAAIyW,GAAM/P,MAAMC,QAAQ3G,GAAMA,GAAMA,GAGhC82B,EAAYn3B,KAAKm3B,UAAU1f,aAAab,IAAIE,GAC9ClP,MACEqJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAimB,EAAU9tB,QAAQ,SAAUkvB,GAC1B,GAAItrB,GAAIsrB,EAAStnB,MAAMnJ,UACnBkD,EAAI,OAASutB,GAAWA,EAASrnB,IAAIpJ,UAAYywB,EAAStnB,MAAMnJ,WAEtD,OAAVmJ,GAAsBA,EAAJhE,KACpBgE,EAAQhE,IAGE,OAARiE,GAAgBlG,EAAIkG,KACtBA,EAAMlG,KAII,OAAViG,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB0iB,EAAWlvB,KAAKJ,IAAItE,KAAK82B,MAAM5lB,IAAMlR,KAAK82B,MAAM7lB,MAAuB,KAAfC,EAAMD,IAE9DinB,EAAUpoB,GAA+B1J,SAApB0J,EAAQooB,QAAwBpoB,EAAQooB,SAAU,CAC3El4B,MAAK82B,MAAMnC,SAASlkB,EAASmjB,EAAW,EAAGnjB,EAASmjB,EAAW,EAAGsE,MAUtE12B,EAASqT,UAAU2jB,aAAe,WAEhC,GAAIC,GAAUz4B,KAAKm3B,UAAU1f,aACzBpT,EAAM,KACNC,EAAM,IAEV,IAAIm0B,EAAS,CAEX,GAAIC,GAAUD,EAAQp0B,IAAI,QAC1BA,GAAMq0B,EAAU/3B,EAAKgH,QAAQ+wB,EAAQznB,MAAO,QAAQnJ,UAAY,IAKhE,IAAI6wB,GAAeF,EAAQn0B,IAAI,QAC3Bq0B,KACFr0B,EAAM3D,EAAKgH,QAAQgxB,EAAa1nB,MAAO,QAAQnJ,UAEjD,IAAI8wB,GAAaH,EAAQn0B,IAAI,MACzBs0B,KAEAt0B,EADS,MAAPA,EACI3D,EAAKgH,QAAQixB,EAAW1nB,IAAK,QAAQpJ,UAErCpD,KAAKJ,IAAIA,EAAK3D,EAAKgH,QAAQixB,EAAW1nB,IAAK,QAAQpJ,YAK/D,OACEzD,IAAY,MAAPA,EAAc,GAAIS,MAAKT,GAAO,KACnCC,IAAY,MAAPA,EAAc,GAAIQ,MAAKR,GAAO,OAUvC9C,EAASqT,UAAUwiB,mBAAqB,SAAU/sB,GAChD,GAAIoG,GAAO1Q,KAAKk3B,QAAQ2B,eAAevuB,GACnC+I,EAAQrT,KAAKk3B,QAAQ4B,gBAAgBxuB,GACrCyuB,EAAQzuB,EAAM0uB,QAAU1uB,EAAM0uB,QAAQzL,OAAOwL,MAAQzuB,EAAMyuB,MAC3DE,EAAQ3uB,EAAM0uB,QAAU1uB,EAAM0uB,QAAQzL,OAAO0L,MAAQ3uB,EAAM2uB,MAC3D9lB,EAAI4lB,EAAQp4B,EAAK4H,gBAAgBvI,KAAKmxB,IAAI+H,iBAC1C9lB,EAAI6lB,EAAQt4B,EAAKgI,eAAe3I,KAAKmxB,IAAI+H,iBAEzCC,EAAOn5B,KAAKk3B,QAAQpnB,QAAQqpB,MAAQ,KACpC10B,EAAQzE,KAAK+1B,KAAKp1B,KAAKy1B,WACvBzM,EAAO3pB,KAAK+1B,KAAKp1B,KAAK20B,UACtB8D,EAAOp5B,KAAK22B,QAAQxjB,GACpBkmB,EAAcF,EAAOA,EAAKC,EAAM30B,EAAOklB,GAAQyP,EAE/CxvB,EAAUjJ,EAAK8J,UAAUH,GACzBgvB,EAAO,IAkBX,OAjBY,OAAR5oB,EACF4oB,EAAO,OACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKq2B,SAASlF,IAAIoI,YACnDD,EAAO,OACEt5B,KAAK+2B,WAAap2B,EAAKmK,UAAUlB,EAAS5J,KAAK+2B,UAAU5F,IAAIoI,YACtED,EAAO,OACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKk3B,QAAQ/F,IAAIqI,UAClDF,EAAO,cACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKi3B,WAAWhE,KACjDqG,EAAO,cAEA34B,EAAKmK,UAAUlB,EAAS5J,KAAKg3B,YAAY/D,KAChDqG,EAAO,eACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKmxB,IAAI5D,UAC1C+L,EAAO,eAIPhvB,MAAOA,EACPoG,KAAMA,EAAOA,EAAKrQ,GAAK,KACvBgT,MAAOA,EAAQA,EAAMomB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACP9lB,EAAGA,EACHC,EAAGA,EACHgmB,KAAMA,EACNC,YAAaA,IAIjBx5B,EAAOD,QAAU4B,GAIb,SAAS3B,EAAQD,EAASM,GAwB9B,QAASuB,GAAQ0Z,EAAWlZ,EAAOszB,EAAQzlB,GAEzC,KAAM/I,MAAMC,QAAQuuB,IAAWA,YAAkB10B,KAAY00B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB1lB,CACpBA,GAAUylB,EACVA,EAASC,EAGX,GAAI3f,GAAK7V,IACTA,MAAKy1B,gBACHxkB,MAAO,KACPC,IAAK,KAELwkB,YAAY,EAEZC,YAAa,SACb1hB,MAAO,KACPC,OAAQ,KACR0hB,UAAW,KACXC,UAAW,MAEb71B,KAAK8P,QAAUnP,EAAK0G,cAAerH,KAAKy1B,gBAGxCz1B,KAAK81B,QAAQ3a,GAGbnb,KAAKgC,cAELhC,KAAK+1B,MACH5E,IAAKnxB,KAAKmxB,IACV6E,SAAUh2B,KAAK8G,MACfmvB,SACEhhB,GAAIjV,KAAKiV,GAAGihB,KAAKl2B,MACjBoV,IAAKpV,KAAKoV,IAAI8gB,KAAKl2B,MACnBivB,KAAMjvB,KAAKivB,KAAKiH,KAAKl2B,OAEvBm2B,eACAx1B,MACE21B,SAAUzgB,EAAG0gB,UAAUL,KAAKrgB,GAC5B2gB,eAAgB3gB,EAAG4gB,gBAAgBP,KAAKrgB,GACxC6gB,OAAQ7gB,EAAG8gB,QAAQT,KAAKrgB,GACxB+gB,aAAc/gB,EAAGghB,cAAcX,KAAKrgB,KAKxC7V,KAAK82B,MAAQ,GAAIj1B,GAAM7B,KAAK+1B,MAC5B/1B,KAAKgC,WAAWwF,KAAKxH,KAAK82B,OAC1B92B,KAAK+1B,KAAKe,MAAQ92B,KAAK82B,MAGvB92B,KAAKq2B,SAAW,GAAIpzB,GAASjD,KAAK+1B,MAClC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKq2B,UAI1Br2B,KAAKg3B,YAAc,GAAIx0B,GAAYxC,KAAK+1B,MACxC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKg3B,aAI1Bh3B,KAAKi3B,WAAa,GAAIx0B,GAAWzC,KAAK+1B,MACtC/1B,KAAKgC,WAAWwF,KAAKxH,KAAKi3B,YAG1Bj3B,KAAK05B,UAAY,GAAI12B,GAAUhD,KAAK+1B,MACpC/1B,KAAKgC,WAAWwF,KAAKxH,KAAK05B,WAE1B15B,KAAKm3B,UAAY,KACjBn3B,KAAKo3B,WAAa,KAElBp3B,KAAKiV,GAAG,MAAO,SAAU3K,GACvBuL,EAAGoZ,KAAK,QAASpZ,EAAGwhB,mBAAmB/sB,MAEzCtK,KAAKiV,GAAG,YAAa,SAAU3K,GAC7BuL,EAAGoZ,KAAK,cAAepZ,EAAGwhB,mBAAmB/sB,MAE/CtK,KAAKmxB,IAAIzxB,KAAK43B,cAAgB,SAAUhtB,GACtCuL,EAAGoZ,KAAK,cAAepZ,EAAGwhB,mBAAmB/sB,KAI3CwF,GACF9P,KAAK4U,WAAW9E,GAIdylB,GACFv1B,KAAKu3B,UAAUhC,GAIbtzB,EACFjC,KAAKw3B,SAASv1B,GAEdjC,KAAKy3B,UApHT,GAEI92B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bw3B,EAAOx3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GA+GpCuB,GAAQoT,UAAY,GAAI6iB,GAMxBj2B,EAAQoT,UAAU2iB,SAAW,SAAUv1B,GACrC,GAGI41B,GAHAC,EAAgC,MAAlB93B,KAAKm3B,SAsBvB,IAfEU,EAHG51B,EAEMA,YAAiBpB,IAAWoB,YAAiBnB,GACzCmB,EAGA,GAAIpB,GAAQoB,GACvB2F,MACEqJ,MAAO,OACPC,IAAK,UARI,KAcflR,KAAKm3B,UAAYU,EACjB73B,KAAK05B,WAAa15B,KAAK05B,UAAUlC,SAASK,GAEtCC,EACF,GAA0B1xB,QAAtBpG,KAAK8P,QAAQmB,OAA0C7K,QAApBpG,KAAK8P,QAAQoB,IAAkB,CACpE,GAAID,GAA8B7K,QAAtBpG,KAAK8P,QAAQmB,MAAqBjR,KAAK8P,QAAQmB,MAAQ,KAC/DC,EAA0B9K,QAApBpG,KAAK8P,QAAQoB,IAAmBlR,KAAK8P,QAAQoB,IAAM,IAE7DlR,MAAKi4B,UAAUhnB,EAAOC,GAAOgnB,SAAS,QAEtCl4B,MAAKm4B,KAAMD,SAAS,KAS1Bz2B,EAAQoT,UAAU0iB,UAAY,SAAUhC,GAEtC,GAAIsC,EAIFA,GAHGtC,EAEMA,YAAkB10B,IAAW00B,YAAkBz0B,GAC3Cy0B,EAGA,GAAI10B,GAAQ00B,GALZ,KAQfv1B,KAAKo3B,WAAaS,EAClB73B,KAAK05B,UAAUnC,UAAUM,IAS3Bp2B,EAAQoT,UAAU8kB,UAAY,SAAUF,EAASxlB,EAAOC,GAOtD,MANc9N,UAAV6N,IACFA,EAAQ,IAEK7N,SAAX8N,IACFA,EAAS,IAE4B9N,SAAnCpG,KAAK05B,UAAUnE,OAAOkE,GACjBz5B,KAAK05B,UAAUnE,OAAOkE,GAASE,UAAU1lB,EAAOC,GAEhD,qBAAuBulB,GASlCh4B,EAAQoT,UAAU+kB,eAAiB,SAAUH,GAC3C,MAAuCrzB,UAAnCpG,KAAK05B,UAAUnE,OAAOkE,GACjBz5B,KAAK05B,UAAUnE,OAAOkE,GAASxP,UAAkE7jB,SAAtDpG,KAAK05B,UAAU5pB,QAAQylB,OAAOsE,WAAWJ,IAA+E,GAArDz5B,KAAK05B,UAAU5pB,QAAQylB,OAAOsE,WAAWJ,KAEvJ,GAUXh4B,EAAQoT,UAAU2jB,aAAe,WAC/B,GAAIn0B,GAAM,KACNC,EAAM,IAGV,KAAK,GAAIm1B,KAAWz5B,MAAK05B,UAAUnE,OACjC,GAAIv1B,KAAK05B,UAAUnE,OAAOvvB,eAAeyzB,IACO,GAA1Cz5B,KAAK05B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAIzjB,GAAI,EAAGA,EAAIxG,KAAK05B,UAAUnE,OAAOkE,GAAStC,UAAUzwB,OAAQF,IAAK,CACxE,GAAIkK,GAAO1Q,KAAK05B,UAAUnE,OAAOkE,GAAStC,UAAU3wB,GAChDhC,EAAQ7D,EAAKgH,QAAQ+I,EAAKyC,EAAG,QAAQrL,SACzCzD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAY,MAAPA,EAAc,GAAIS,MAAKT,GAAO,KACnCC,IAAY,MAAPA,EAAc,GAAIQ,MAAKR,GAAO,OAUvC7C,EAAQoT,UAAUwiB,mBAAqB,SAAU/sB,GAC/C,GAAIyuB,GAAQzuB,EAAM0uB,QAAU1uB,EAAM0uB,QAAQzL,OAAOwL,MAAQzuB,EAAMyuB,MAC3DE,EAAQ3uB,EAAM0uB,QAAU1uB,EAAM0uB,QAAQzL,OAAO0L,MAAQ3uB,EAAM2uB,MAC3D9lB,EAAI4lB,EAAQp4B,EAAK4H,gBAAgBvI,KAAKmxB,IAAI+H,iBAC1C9lB,EAAI6lB,EAAQt4B,EAAKgI,eAAe3I,KAAKmxB,IAAI+H,iBACzCE,EAAOp5B,KAAK22B,QAAQxjB,GAEpBvJ,EAAUjJ,EAAK8J,UAAUH,GACzBgvB,EAAO,IACP34B,GAAKmK,UAAUlB,EAAS5J,KAAKq2B,SAASlF,IAAIoI,YAC5CD,EAAO,OACEt5B,KAAK+2B,WAAap2B,EAAKmK,UAAUlB,EAAS5J,KAAK+2B,UAAU5F,IAAIoI,YACtED,EAAO,OACE34B,EAAKmK,UAAUlB,EAAS5J,KAAK05B,UAAUI,UAAU3I,IAAIlQ,OAC9DqY,EAAO,YACE34B,EAAKmK,UAAUlB,EAAS5J,KAAK05B,UAAUK,WAAW5I,IAAIlQ,OAC/DqY,EAAO,YACE34B,EAAKmK,UAAUlB,EAAS5J,KAAK05B,UAAUM,WAAW7I,IAAIlQ,OAC/DqY,EAAO,SACE34B,EAAKmK,UAAUlB,EAAS5J,KAAK05B,UAAUO,YAAY9I,IAAIlQ,OAChEqY,EAAO,SACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKi3B,WAAWhE,KACjDqG,EAAO,cAEA34B,EAAKmK,UAAUlB,EAAS5J,KAAKg3B,YAAY/D,KAChDqG,EAAO,eACE34B,EAAKmK,UAAUlB,EAAS5J,KAAKmxB,IAAI5D,UAC1C+L,EAAO,aAGT,IAAI90B,MACAs1B,EAAY95B,KAAK05B,UAAUI,UAC3BC,EAAa/5B,KAAK05B,UAAUK,UAQhC,OAPKD,GAAUI,QACb11B,EAAMgD,KAAKsyB,EAAUK,cAAc/mB,IAEhC2mB,EAAWG,QACd11B,EAAMgD,KAAKuyB,EAAWI,cAAc/mB,KAIpC9I,MAAOA,EACPgvB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACP9lB,EAAGA,EACHC,EAAGA,EACHgmB,KAAMA,EACN50B,MAAOA,IAIX3E,EAAOD,QAAU6B,GAIb,SAAS5B,EAAQD,EAASM,GAI9B,GAAIuD,GAASvD,EAAoB,GAOjCN,GAAQw6B,qBAAuB,SAAUrE,EAAMI,GAE7C,GADAJ,EAAKI,eACDA,GACgC,GAA9BpvB,MAAMC,QAAQmvB,GAAsB,CACtC,IAAK,GAAI3vB,GAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IACtC,GAA8BJ,SAA1B+vB,EAAY3vB,GAAG6zB,OAAsB,CACvC,GAAIC,KACJA,GAASrpB,MAAQxN,EAAO0yB,EAAY3vB,GAAGyK,OAAOjJ,SAASF,UACvDwyB,EAASppB,IAAMzN,EAAO0yB,EAAY3vB,GAAG0K,KAAKlJ,SAASF,UACnDiuB,EAAKI,YAAY3uB,KAAK8yB,GAG1BvE,EAAKI,YAAYte,KAAK,SAAUvR,EAAGC,GACjC,MAAOD,GAAE2K,MAAQ1K,EAAE0K,UAW3BrR,EAAQ26B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD/vB,SAAxC2vB,EAAKC,SAASkD,gBAAgBjlB,MAAqB,CACpErU,EAAQw6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDllB,GAAQxN,EAAOsyB,EAAKe,MAAM7lB,OAC1BC,EAAMzN,EAAOsyB,EAAKe,MAAM5lB,KAExBspB,EAAazE,EAAKe,MAAM5lB,IAAM6kB,EAAKe,MAAM7lB,MACzCwpB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBjlB,MAElDzN,EAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IACtC,GAA8BJ,SAA1B+vB,EAAY3vB,GAAG6zB,OAAsB,CACvC,GAAIK,GAAYj3B,EAAO0yB,EAAY3vB,GAAGyK,OAClC0pB,EAAUl3B,EAAO0yB,EAAY3vB,GAAG0K,IAEpC,IAAoB,gBAAhBwpB,EAAUE,GACZ,KAAM,IAAIp3B,OAAM,qCAAuC2yB,EAAY3vB,GAAGyK,MAExE,IAAkB,gBAAd0pB,EAAQC,GACV,KAAM,IAAIp3B,OAAM,mCAAqC2yB,EAAY3vB,GAAG0K,IAGtE,IAAIC,GAAWwpB,EAAUD,CACzB,IAAIvpB,GAAY,EAAIspB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW3pB,EAAI4pB,OACnB,QAAQ3E,EAAY3vB,GAAG6zB,QACrB,IAAK,QAECK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAU/pB,EAAM+pB,aAC1BN,EAAUO,KAAKhqB,EAAMgqB,QACrBP,EAAUhO,SAAS,EAAG,QAEtBiO,EAAQK,UAAU/pB,EAAM+pB,aACxBL,EAAQM,KAAKhqB,EAAMgqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAQ,QAE7B2P,EAASlmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAIumB,GAAYP,EAAQjN,KAAKgN,EAAW,QACpCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKlqB,EAAMkqB,QACrBT,EAAUU,MAAMnqB,EAAMmqB,SACtBV,EAAUO,KAAKhqB,EAAMgqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQhmB,IAAIumB,EAAW,QAEvBR,EAAUhO,SAAS,EAAG,SACtBiO,EAAQjO,SAAS,EAAG,SAEpBmO,EAASlmB,IAAI,EAAG,QAChB,MACF,KAAK,UACC+lB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMnqB,EAAMmqB,SACtBV,EAAUO,KAAKhqB,EAAMgqB,QACrBP,EAAUhO,SAAS,EAAG,UAEtBiO,EAAQS,MAAMnqB,EAAMmqB,SACpBT,EAAQM,KAAKhqB,EAAMgqB,QACnBN,EAAQjO,SAAS,EAAG,UACpBiO,EAAQhmB,IAAIuW,EAAQ,UAEpB2P,EAASlmB,IAAI,EAAG,SAChB,MACF,KAAK,SACC+lB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKhqB,EAAMgqB,QACrBP,EAAUhO,SAAS,EAAG,SACtBiO,EAAQM,KAAKhqB,EAAMgqB,QACnBN,EAAQjO,SAAS,EAAG,SACpBiO,EAAQhmB,IAAIuW,EAAQ,SAEpB2P,EAASlmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA0mB,SAAQtG,IAAI,2EAA4EoB,EAAY3vB,GAAG6zB,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAY3uB,MAAOyJ,MAAOypB,EAAU5yB,UAAWoJ,IAAKypB,EAAQ7yB,YACzDquB,EAAY3vB,GAAG6zB,QACrB,IAAK,QACHK,EAAU/lB,IAAI,EAAG,QACjBgmB,EAAQhmB,IAAI,EAAG,OACf,MACF,KAAK,SACH+lB,EAAU/lB,IAAI,EAAG,SACjBgmB,EAAQhmB,IAAI,EAAG,QACf,MACF,KAAK,UACH+lB,EAAU/lB,IAAI,EAAG,UACjBgmB,EAAQhmB,IAAI,EAAG,SACf,MACF,KAAK,SACH+lB,EAAU/lB,IAAI,EAAG,KACjBgmB,EAAQhmB,IAAI,EAAG,IACf,MACF,SAEE,WADA0mB,SAAQtG,IAAI,2EAA4EoB,EAAY3vB,GAAG6zB,QAI7GtE,EAAKI,YAAY3uB,MAAOyJ,MAAOypB,EAAU5yB,UAAWoJ,IAAKypB,EAAQ7yB,aAKvElI,EAAQ07B,iBAAiBvF,EAEzB,IAAIwF,GAAc37B,EAAQ47B,SAASzF,EAAKe,MAAM7lB,MAAO8kB,EAAKI,aACtDsF,EAAY77B,EAAQ47B,SAASzF,EAAKe,MAAM5lB,IAAK6kB,EAAKI,aAClDuF,EAAa3F,EAAKe,MAAM7lB,MACxB0qB,EAAW5F,EAAKe,MAAM5lB,GACA,IAAtBqqB,EAAYrB,SACdwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAE3E,GAApBc,EAAUvB,SACZyB,EAAoC,GAAzB5F,EAAKe,MAAM+E,WAAqBJ,EAAUf,UAAY,EAAIe,EAAUd,QAAU,IAEjE,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAUzC/7B,EAAQ07B,iBAAmB,SAAUvF,GAGnC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACKv1B,EAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IACtC,IAAK,GAAIymB,GAAI,EAAGA,EAAIkJ,EAAYzvB,OAAQumB,IAClCzmB,GAAKymB,GAA8B,GAAzBkJ,EAAYlJ,GAAGjV,QAA2C,GAAzBme,EAAY3vB,GAAGwR,SAExDme,EAAYlJ,GAAGhc,OAASklB,EAAY3vB,GAAGyK,OAASklB,EAAYlJ,GAAG/b,KAAOilB,EAAY3vB,GAAG0K,IACvFilB,EAAYlJ,GAAGjV,QAAS,EAGjBme,EAAYlJ,GAAGhc,OAASklB,EAAY3vB,GAAGyK,OAASklB,EAAYlJ,GAAGhc,OAASklB,EAAY3vB,GAAG0K,KAC9FilB,EAAY3vB,GAAG0K,IAAMilB,EAAYlJ,GAAG/b,IACpCilB,EAAYlJ,GAAGjV,QAAS,GAGjBme,EAAYlJ,GAAG/b,KAAOilB,EAAY3vB,GAAGyK,OAASklB,EAAYlJ,GAAG/b,KAAOilB,EAAY3vB,GAAG0K,MAC1FilB,EAAY3vB,GAAGyK,MAAQklB,EAAYlJ,GAAGhc,MACtCklB,EAAYlJ,GAAGjV,QAAS,GAMhC,KAAK,GAAIxR,GAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IAClC2vB,EAAY3vB,GAAGwR,UAAW,GAC5B+jB,EAAUv0B,KAAK2uB,EAAY3vB,GAI/BuvB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAYte,KAAK,SAAUvR,EAAGC,GACjC,MAAOD,GAAE2K,MAAQ1K,EAAE0K,SAIvBrR,EAAQo8B,WAAa,SAAUC,GAC7B,IAAK,GAAIz1B,GAAI,EAAGA,EAAIy1B,EAAMv1B,OAAQF,IAChC60B,QAAQtG,IAAIvuB,EAAG,GAAI1B,MAAKm3B,EAAMz1B,GAAGyK,OAAQ,GAAInM,MAAKm3B,EAAMz1B,GAAG0K,KAAM+qB,EAAMz1B,GAAGyK,MAAOgrB,EAAMz1B,GAAG0K,IAAK+qB,EAAMz1B,GAAGwR,SAS5GpY,EAAQs8B,oBAAsB,SAAUC,EAAUC,GAGhD,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQz0B,UAC3BtB,EAAI,EAAGA,EAAI21B,EAAShG,YAAYzvB,OAAQF,IAAK,CACpD,GAAIk0B,GAAYyB,EAAShG,YAAY3vB,GAAGyK,MACpC0pB,EAAUwB,EAAShG,YAAY3vB,GAAG0K,GACtC,IAAIorB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAKzsB,WAAaw0B,GAAgBF,EAAc,CAClG,GAAItrB,GAAYrN,EAAO24B,GACnB/zB,EAAW5E,EAAOk3B,EAElB7pB,GAAUmqB,QAAU5yB,EAAS4yB,OAC/BkB,EAASK,cAAe,EACf1rB,EAAUsqB,SAAW/yB,EAAS+yB,QACvCe,EAASM,eAAgB,EAChB3rB,EAAUkqB,aAAe3yB,EAAS2yB,cAC3CmB,EAASO,aAAc,GAGzBP,EAASI,QAAUl0B,EAASL,WAkChCpI,EAAQ02B,SAAW,SAAUoB,EAAM0B,EAAMnlB,GACvC,GAAoC,GAAhCyjB,EAAK3B,KAAKI,YAAYzvB,OAAa,CACrC,GAAIi2B,GAAajF,EAAKZ,MAAM6F,WAAW1oB,EACvC,QAAQmlB,EAAKtxB,UAAY60B,EAAWzR,QAAUyR,EAAWl4B,MAEzD,GAAIy1B,GAASt6B,EAAQ47B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAIvpB,GAAWvR,EAAQg9B,yBAAyBlF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAM7lB,MAAOymB,EAAKZ,MAAM5lB,IACpGkoB,GAAOx5B,EAAQi9B,qBAAqBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIuD,GAAajF,EAAKZ,MAAM6F,WAAW1oB,EAAO9C,EAC9C,QAAQioB,EAAKtxB,UAAY60B,EAAWzR,QAAUyR,EAAWl4B,OAY7D7E,EAAQ82B,OAAS,SAAUgB,EAAMvkB,EAAGc,GAClC,GAAoC,GAAhCyjB,EAAK3B,KAAKI,YAAYzvB,OAAa,CACrC,GAAIi2B,GAAajF,EAAKZ,MAAM6F,WAAW1oB,EACvC,OAAO,IAAInP,MAAKqO,EAAIwpB,EAAWl4B,MAAQk4B,EAAWzR,QAElD,GAAI4R,GAAiBl9B,EAAQg9B,yBAAyBlF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAM7lB,MAAOymB,EAAKZ,MAAM5lB,KACtG6rB,EAAgBrF,EAAKZ,MAAM5lB,IAAMwmB,EAAKZ,MAAM7lB,MAAQ6rB,EACpDE,EAAkBD,EAAgB5pB,EAAIc,EACtCgpB,EAA4Br9B,EAAQs9B,6BAA6BxF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOkG,GAEpGG,EAAU,GAAIr4B,MAAKm4B,EAA4BD,EAAkBtF,EAAKZ,MAAM7lB,MAChF,OAAOksB,IAWXv9B,EAAQg9B,yBAA2B,SAAUzG,EAAallB,EAAOC,GAE/D,IAAK,GADDC,GAAW,EACN3K,EAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IAAK,CAC3C,GAAIk0B,GAAYvE,EAAY3vB,GAAGyK,MAC3B0pB,EAAUxE,EAAY3vB,GAAG0K,GAEzBwpB,IAAazpB,GAAmBC,EAAVypB,IACxBxpB,GAAYwpB,EAAUD,GAG1B,MAAOvpB,IAUTvR,EAAQi9B,qBAAuB,SAAU1G,EAAaW,EAAOsC,GAG3D,MAFAA,GAAO31B,EAAO21B,GAAMpxB,SAASF,UAC7BsxB,GAAQx5B,EAAQw9B,wBAAwBjH,EAAaW,EAAOsC,IAI9Dx5B,EAAQw9B,wBAA0B,SAAUjH,EAAaW,EAAOsC,GAC9D,GAAIiE,GAAa,CACjBjE,GAAO31B,EAAO21B,GAAMpxB,SAASF,SAE7B,KAAK,GAAItB,GAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IAAK,CAC3C,GAAIk0B,GAAYvE,EAAY3vB,GAAGyK,MAC3B0pB,EAAUxE,EAAY3vB,GAAG0K,GAEzBwpB,IAAa5D,EAAM7lB,OAAS0pB,EAAU7D,EAAM5lB,KAC1CkoB,GAAQuB,IACV0C,GAAc1C,EAAUD,GAI9B,MAAO2C,IAWTz9B,EAAQs9B,6BAA+B,SAAU/G,EAAaW,EAAOwG,GAKnE,IAAK,GAJDR,GAAiB,EACjB3rB,EAAW,EACXosB,EAAgBzG,EAAM7lB,MAEjBzK,EAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IAAK,CAC3C,GAAIk0B,GAAYvE,EAAY3vB,GAAGyK,MAC3B0pB,EAAUxE,EAAY3vB,GAAG0K,GAE7B,IAAIwpB,GAAa5D,EAAM7lB,OAAS0pB,EAAU7D,EAAM5lB,IAAK,CAGnD,GAFAC,GAAYupB,EAAY6C,EACxBA,EAAgB5C,EACZxpB,GAAYmsB,EACd,KAEAR,IAAkBnC,EAAUD,GAKlC,MAAOoC,IAWTl9B,EAAQ49B,mBAAqB,SAAUrH,EAAaiD,EAAMqE,EAAWC,GACnE,GAAIlC,GAAW57B,EAAQ47B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZuD,EACuB,GAArBC,EACKlC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAEjDoC,EAASd,UAAY,EAGL,GAArBgD,EACKlC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAEjDc,EAASb,QAAU,EAIvBvB,GAWXx5B,EAAQ47B,SAAW,SAAUpC,EAAMjD,GACjC,IAAK,GAAI3vB,GAAI,EAAGA,EAAI2vB,EAAYzvB,OAAQF,IAAK,CAC3C,GAAIk0B,GAAYvE,EAAY3vB,GAAGyK,MAC3B0pB,EAAUxE,EAAY3vB,GAAG0K,GAE7B,IAAIkoB,GAAQsB,GAAoBC,EAAPvB,EAEvB,OAASc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAI1D,OAAST,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKrD,SAAS96B,EAAQD,EAASM,GA8B9B,QAAS0B,GAASqP,EAAOC,EAAKysB,EAAaC,EAAiBC,EAAaC,GAEvE99B,KAAKu8B,QAAU,EAEfv8B,KAAK+9B,WAAY,EACjB/9B,KAAKg+B,UAAY,EACjBh+B,KAAK2pB,KAAO,EACZ3pB,KAAKyE,MAAQ,EAEbzE,KAAKi+B,YACLj+B,KAAKk+B,UACLl+B,KAAKm+B,UAAY,EAEjBn+B,KAAKo+B,YAAc,EAAG,EAAG,EAAG,IAC5Bp+B,KAAKq+B,YAAc,IAAM,GAAK,EAAG,GAEjCr+B,KAAK89B,WAAaA,EAElB99B,KAAK20B,SAAS1jB,EAAOC,EAAKysB,EAAaC,EAAiBC,GAa1Dj8B,EAASiT,UAAU8f,SAAW,SAAU1jB,EAAOC,EAAKysB,EAAaC,EAAiBC,GAChF79B,KAAKs0B,OAA6BluB,SAApBy3B,EAAYx5B,IAAoB4M,EAAQ4sB,EAAYx5B,IAClErE,KAAKu0B,KAA2BnuB,SAApBy3B,EAAYv5B,IAAoB4M,EAAM2sB,EAAYv5B,IAE1DtE,KAAKs0B,QAAUt0B,KAAKu0B,OACtBv0B,KAAKs0B,QAAU,IACft0B,KAAKu0B,MAAQ,GAGO,GAAlBv0B,KAAK+9B,WACP/9B,KAAKs+B,eAAeX,EAAaC,GAGnC59B,KAAKu+B,SAASV,IAOhBj8B,EAASiT,UAAUypB,eAAiB,SAAUX,EAAaC,GAEzD,GAAIlqB,GAAO1T,KAAKu0B,KAAOv0B,KAAKs0B,OACxBkK,EAAkB,IAAP9qB,EACX+qB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmBh6B,KAAKqqB,MAAMrqB,KAAKqwB,IAAIyJ,GAAY95B,KAAKswB,MAExD2J,EAAe,GACfC,EAAkBl6B,KAAKwwB,IAAI,GAAIwJ,GAE/BztB,EAAQ,CACW,GAAnBytB,IACFztB,EAAQytB,EAIV,KAAK,GADDG,IAAgB,EACXr4B,EAAIyK,EAAOvM,KAAKwnB,IAAI1lB,IAAM9B,KAAKwnB,IAAIwS,GAAmBl4B,IAAK,CAClEo4B,EAAkBl6B,KAAKwwB,IAAI,GAAI1uB,EAC/B,KAAK,GAAIymB,GAAI,EAAGA,EAAIjtB,KAAKq+B,WAAW33B,OAAQumB,IAAK,CAC/C,GAAI6R,GAAWF,EAAkB5+B,KAAKq+B,WAAWpR,EACjD,IAAI6R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe1R,CACf,QAGJ,GAAqB,GAAjB4R,EACF,MAGJ7+B,KAAKg+B,UAAYW,EACjB3+B,KAAKyE,MAAQm6B,EACb5+B,KAAK2pB,KAAOiV,EAAkB5+B,KAAKq+B,WAAWM,IAOhD/8B,EAASiT,UAAU0pB,SAAW,SAAUV,GAClBz3B,SAAhBy3B,IACFA,KAGF,IAAIkB,GAAgC34B,SAApBy3B,EAAYx5B,IAAoBrE,KAAKs0B,OAAsB,EAAbt0B,KAAKyE,MAAYzE,KAAKq+B,WAAWr+B,KAAKg+B,WAAaH,EAAYx5B,IACzH26B,EAA8B54B,SAApBy3B,EAAYv5B,IAAoBtE,KAAKu0B,KAAOv0B,KAAKyE,MAAQzE,KAAKq+B,WAAWr+B,KAAKg+B,WAAaH,EAAYv5B,GAErHtE,MAAKk+B,UAAgC93B,SAApBy3B,EAAYv5B,IAAoBtE,KAAKi/B,aAAaD,GAAWnB,EAAYv5B,IAC1FtE,KAAKi+B,YAAkC73B,SAApBy3B,EAAYx5B,IAAoBrE,KAAKi/B,aAAaF,GAAalB,EAAYx5B,IAGvE,GAAnBrE,KAAK89B,aAAuB99B,KAAKk+B,UAAYl+B,KAAKi+B,aAAej+B,KAAK2pB,MAAQ,IAChF3pB,KAAKk+B,WAAal+B,KAAKk+B,UAAYl+B,KAAK2pB,MAG1C3pB,KAAKm+B,UAAYn+B,KAAKi/B,aAAaD,GAAWA,EAAUh/B,KAAKi/B,aAAaF,GAAaA,EACvF/+B,KAAKk/B,YAAcl/B,KAAKk+B,UAAYl+B,KAAKi+B,YAEzCj+B,KAAKu8B,QAAUv8B,KAAKk+B,WAGtBt8B,EAASiT,UAAUoqB,aAAe,SAAUz6B,GAC1C,GAAI26B,GAAU36B,EAAQA,GAASxE,KAAKyE,MAAQzE,KAAKq+B,WAAWr+B,KAAKg+B,WACjE,OAAIx5B,IAASxE,KAAKyE,MAAQzE,KAAKq+B,WAAWr+B,KAAKg+B,YAAc,GAAOh+B,KAAKyE,MAAQzE,KAAKq+B,WAAWr+B,KAAKg+B,WAC7FmB,EAAUn/B,KAAKyE,MAAQzE,KAAKq+B,WAAWr+B,KAAKg+B,WAE5CmB,GAQXv9B,EAASiT,UAAUuqB,QAAU,WAC3B,MAAOp/B,MAAKu8B,SAAWv8B,KAAKi+B,aAM9Br8B,EAASiT,UAAUgV,KAAO,WACxB,GAAImJ,GAAOhzB,KAAKu8B,OAChBv8B,MAAKu8B,SAAWv8B,KAAK2pB,KAGjB3pB,KAAKu8B,SAAWvJ,IAClBhzB,KAAKu8B,QAAUv8B,KAAKu0B,OAOxB3yB,EAASiT,UAAUwqB,SAAW,WAC5Br/B,KAAKu8B,SAAWv8B,KAAK2pB,KACrB3pB,KAAKk+B,WAAal+B,KAAK2pB,KACvB3pB,KAAKk/B,YAAcl/B,KAAKk+B,UAAYl+B,KAAKi+B,aAO3Cr8B,EAASiT,UAAU+U,WAAa,SAAU0V,GAExC,GAAI/C,GAAU73B,KAAKwnB,IAAIlsB,KAAKu8B,SAAWv8B,KAAK2pB,KAAO,EAAI,EAAI3pB,KAAKu8B,QAC5DlH,EAAc,GAAKvxB,OAAOy4B,GAASlH,YAAY,EAGnD,IAAiBjvB,SAAbk5B,GAA2Bp6B,MAAMpB,OAAOw7B,KAkC1C,GAAgC,IAA5BjK,EAAY9tB,QAAQ,MAA0C,IAA5B8tB,EAAY9tB,QAAQ,KAExD,IAAK,GAAIf,GAAI6uB,EAAY3uB,OAAS,EAAGF,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlB6uB,EAAY7uB,GAET,CAAA,GAAsB,KAAlB6uB,EAAY7uB,IAA+B,KAAlB6uB,EAAY7uB,GAAW,CACzD6uB,EAAcA,EAAY5oB,MAAM,EAAGjG,EACnC,OAEA,MALA6uB,EAAcA,EAAY5oB,MAAM,EAAGjG,QAtCa,CAEtD,GAAI+4B,GAAM,GACNp2B,EAAQksB,EAAY9tB,QAAQ,IAmBhC,IAlBa,IAAT4B,IAEFo2B,EAAMlK,EAAY5oB,MAAMtD,GAExBksB,EAAcA,EAAY5oB,MAAM,EAAGtD,IAErCA,EAAQzE,KAAKJ,IAAI+wB,EAAY9tB,QAAQ,KAAM8tB,EAAY9tB,QAAQ,MACjD,KAAV4B,GAEe,IAAbm2B,IACFjK,GAAe,KAGjBlsB,EAAQksB,EAAY3uB,OAAS44B,GACP,IAAbA,IAETn2B,GAASm2B,EAAW,GAElBn2B,EAAQksB,EAAY3uB,OAEtB,IAAK,GAAI84B,GAAMr2B,EAAQksB,EAAY3uB,OAAQ84B,EAAM,EAAGA,IAClDnK,GAAe,QAIjBA,GAAcA,EAAY5oB,MAAM,EAAGtD,EAGrCksB,IAAekK,EAiBjB,MAAOlK,IAQTzzB,EAASiT,UAAU4qB,QAAU,WAC3B,MAAOz/B,MAAKu8B,SAAWv8B,KAAKyE,MAAQzE,KAAKo+B,WAAWp+B,KAAKg+B,aAAe,GAG1En+B,EAAOD,QAAUgC,GAIb,SAAS/B,EAAQD,EAASM,GAkB9B,QAAS2B,GAAMk0B,EAAMjmB,GACnB,GAAI4vB,GAAMj8B,IAASk8B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/D9/B,MAAKiR,MAAQyuB,EAAI5E,QAAQnmB,IAAI,GAAI,QAAQ7M,UACzC9H,KAAKkR,IAAMwuB,EAAI5E,QAAQnmB,IAAI,EAAG,QAAQ7M,UAEtC9H,KAAK+1B,KAAOA,EACZ/1B,KAAK+/B,gBAAkB,EACvB//B,KAAKggC,YAAc,EACnBhgC,KAAK47B,cAAe,EACpB57B,KAAK67B,YAAa,EAGlB77B,KAAKy1B,gBACHxkB,MAAO,KACPC,IAAK,KACLusB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACV77B,IAAK,KACLC,IAAK,KACL67B,QAAS,GACTC,QAAS,UAEXpgC,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBAEpCz1B,KAAK8G,OACHu5B,UAEFrgC,KAAKsgC,aAAe,KAGpBtgC,KAAK+1B,KAAKE,QAAQhhB,GAAG,WAAYjV,KAAKugC,aAAarK,KAAKl2B,OACxDA,KAAK+1B,KAAKE,QAAQhhB,GAAG,UAAWjV,KAAKwgC,QAAQtK,KAAKl2B,OAClDA,KAAK+1B,KAAKE,QAAQhhB,GAAG,SAAUjV,KAAKygC,WAAWvK,KAAKl2B,OAGpDA,KAAK+1B,KAAKE,QAAQhhB,GAAG,aAAcjV,KAAK0gC,cAAcxK,KAAKl2B,OAG3DA,KAAK+1B,KAAKE,QAAQhhB,GAAG,QAASjV,KAAK2gC,SAASzK,KAAKl2B,OACjDA,KAAK+1B,KAAKE,QAAQhhB,GAAG,QAASjV,KAAK4gC,SAAS1K,KAAKl2B,OAEjDA,KAAK4U,WAAW9E,GAsClB,QAAS+wB,GAAkBpD,GACzB,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIv2B,WAAU,sBAAwBu2B,EAAY,yCA0e5D,QAASqD,GAAWT,EAAOz2B,GACzB,OACEuJ,EAAGktB,EAAMltB,EAAIxS,EAAK4H,gBAAgBqB,GAClCwJ,EAAGitB,EAAMjtB,EAAIzS,EAAKgI,eAAeiB,IA7kBrC,GAAIjJ,GAAOT,EAAoB,GAE3BuD,GADavD,EAAoB,IACxBA,EAAoB,KAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GAuDnC2B,GAAMgT,UAAY,GAAItS,GAkBtBV,EAAMgT,UAAUD,WAAa,SAAU9E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnG5O,GAAKkG,gBAAgB0I,EAAQvP,KAAK8P,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC9P,KAAK20B,SAAS7kB,EAAQmB,MAAOnB,EAAQoB,OA2B3CrP,EAAMgT,UAAU8f,SAAW,SAAU1jB,EAAOC,EAAKgnB,EAAS6I,GACpDA,KAAW,IACbA,GAAS,EAEX,IAAIzM,GAAkBluB,QAAT6K,EAAqBtQ,EAAKgH,QAAQsJ,EAAO,QAAQnJ,UAAY,KACtEysB,EAAcnuB,QAAP8K,EAAmBvQ,EAAKgH,QAAQuJ,EAAK,QAAQpJ,UAAY,IAGpE,IAFA9H,KAAKghC,mBAED9I,EAAS,CACX,GAAIriB,GAAK7V,KACLihC,EAAYjhC,KAAKiR,MACjBiwB,EAAUlhC,KAAKkR,IACfC,EAA8B,gBAAZ+mB,GAAuBA,EAAU,IACnDiJ,GAAW,GAAIr8B,OAAOgD,UACtBs5B,GAAa,EAEbvX,EAAO,SAAWwX,GACpB,QAASxX,KACP,MAAOwX,GAAM3nB,MAAM1Z,KAAMyG,WAO3B,MAJAojB,GAAKjkB,SAAW,WACd,MAAOy7B,GAAMz7B,YAGRikB,GACN,WACD,IAAKhU,EAAG/O,MAAMu5B,MAAMiB,SAAU,CAC5B,GAAI5B,IAAM,GAAI56B,OAAOgD,UACjBsxB,EAAOsG,EAAMyB,EACbI,EAAOnI,EAAOjoB,EACdlE,EAAIs0B,GAAmB,OAAXjN,EAAkBA,EAAS3zB,EAAKqQ,cAAcooB,EAAM6H,EAAW3M,EAAQnjB,GACnFnG,EAAIu2B,GAAiB,OAAThN,EAAgBA,EAAO5zB,EAAKqQ,cAAcooB,EAAM8H,EAAS3M,EAAMpjB,EAE/EqwB,GAAU3rB,EAAGimB,YAAY7uB,EAAGjC,GAC5BrJ,EAAS44B,kBAAkB1kB,EAAGkgB,KAAMlgB,EAAG/F,QAAQqmB,aAC/CiL,EAAaA,GAAcI,EACvBA,GACF3rB,EAAGkgB,KAAKE,QAAQhH,KAAK,eAAiBhe,MAAO,GAAInM,MAAK+Q,EAAG5E,OAAQC,IAAK,GAAIpM,MAAK+Q,EAAG3E,KAAM6vB,OAAQA,IAG9FQ,EACEH,GACFvrB,EAAGkgB,KAAKE,QAAQhH,KAAK,gBAAkBhe,MAAO,GAAInM,MAAK+Q,EAAG5E,OAAQC,IAAK,GAAIpM,MAAK+Q,EAAG3E,KAAM6vB,OAAQA,IAKnGlrB,EAAGyqB,aAAeplB,WAAW2O,EAAM,MAKzC,OAAOA,KAEP,GAAI2X,GAAUxhC,KAAK87B,YAAYxH,EAAQC,EAEvC,IADA5yB,EAAS44B,kBAAkBv6B,KAAK+1B,KAAM/1B,KAAK8P,QAAQqmB,aAC/CqL,EAAS,CACX,GAAIhsB,IAAWvE,MAAO,GAAInM,MAAK9E,KAAKiR,OAAQC,IAAK,GAAIpM,MAAK9E,KAAKkR,KAAM6vB,OAAQA,EAC7E/gC,MAAK+1B,KAAKE,QAAQhH,KAAK,cAAezZ,GACtCxV,KAAK+1B,KAAKE,QAAQhH,KAAK,eAAgBzZ,KAS7C3T,EAAMgT,UAAUmsB,iBAAmB,WAC7BhhC,KAAKsgC,eACPrlB,aAAajb,KAAKsgC,cAClBtgC,KAAKsgC,aAAe,OAaxBz+B,EAAMgT,UAAUinB,YAAc,SAAU7qB,EAAOC,GAC7C,GAIIwc,GAJA+T,EAAoB,MAATxwB,EAAgBtQ,EAAKgH,QAAQsJ,EAAO,QAAQnJ,UAAY9H,KAAKiR,MACxEywB,EAAgB,MAAPxwB,EAAcvQ,EAAKgH,QAAQuJ,EAAK,QAAQpJ,UAAY9H,KAAKkR,IAClE5M,EAA0B,MAApBtE,KAAK8P,QAAQxL,IAAc3D,EAAKgH,QAAQ3H,KAAK8P,QAAQxL,IAAK,QAAQwD,UAAY,KACpFzD,EAA0B,MAApBrE,KAAK8P,QAAQzL,IAAc1D,EAAKgH,QAAQ3H,KAAK8P,QAAQzL,IAAK,QAAQyD,UAAY,IAIxF,IAAI5C,MAAMu8B,IAA0B,OAAbA,EACrB,KAAM,IAAIj+B,OAAM,kBAAoByN,EAAQ,IAE9C,IAAI/L,MAAMw8B,IAAsB,OAAXA,EACnB,KAAM,IAAIl+B,OAAM,gBAAkB0N,EAAM,IAyC1C,IArCauwB,EAATC,IACFA,EAASD,GAIC,OAARp9B,GACaA,EAAXo9B,IACF/T,EAAOrpB,EAAMo9B,EACbA,GAAY/T,EACZgU,GAAUhU,EAGC,MAAPppB,GACEo9B,EAASp9B,IACXo9B,EAASp9B,IAOL,OAARA,GACEo9B,EAASp9B,IACXopB,EAAOgU,EAASp9B,EAChBm9B,GAAY/T,EACZgU,GAAUhU,EAGC,MAAPrpB,GACaA,EAAXo9B,IACFA,EAAWp9B,IAOU,OAAzBrE,KAAK8P,QAAQqwB,QAAkB,CACjC,GAAIA,GAAUtZ,WAAW7mB,KAAK8P,QAAQqwB,QACxB,GAAVA,IACFA,EAAU,GAEYA,EAApBuB,EAASD,IACPzhC,KAAKkR,IAAMlR,KAAKiR,QAAUkvB,GAAWsB,EAAWzhC,KAAKiR,OAASywB,EAAS1hC,KAAKkR,KAE9EuwB,EAAWzhC,KAAKiR,MAChBywB,EAAS1hC,KAAKkR,MAGdwc,EAAOyS,GAAWuB,EAASD,GAC3BA,GAAY/T,EAAO,EACnBgU,GAAUhU,EAAO,IAMvB,GAA6B,OAAzB1tB,KAAK8P,QAAQswB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAW7mB,KAAK8P,QAAQswB,QACxB,GAAVA,IACFA,EAAU,GAGRsB,EAASD,EAAWrB,IAClBpgC,KAAKkR,IAAMlR,KAAKiR,QAAUmvB,GAAWqB,EAAWzhC,KAAKiR,OAASywB,EAAS1hC,KAAKkR,KAE9EuwB,EAAWzhC,KAAKiR,MAChBywB,EAAS1hC,KAAKkR,MAGdwc,EAAOgU,EAASD,EAAWrB,EAC3BqB,GAAY/T,EAAO,EACnBgU,GAAUhU,EAAO,IAKvB,GAAI8T,GAAUxhC,KAAKiR,OAASwwB,GAAYzhC,KAAKkR,KAAOwwB,CASpD,OANMD,IAAYzhC,KAAKiR,OAASwwB,GAAYzhC,KAAKkR,KAAOwwB,GAAU1hC,KAAKiR,OAASywB,GAAU1hC,KAAKkR,KAAUlR,KAAKiR,OAASwwB,GAAYzhC,KAAKiR,OAASywB,GAAU1hC,KAAKkR,KAAOuwB,GAAYzhC,KAAKkR,KAAOwwB,GAC7L1hC,KAAK+1B,KAAKE,QAAQhH,KAAK,oBAGzBjvB,KAAKiR,MAAQwwB,EACbzhC,KAAKkR,IAAMwwB,EACJF,GAOT3/B,EAAMgT,UAAU8sB,SAAW,WACzB,OACE1wB,MAAOjR,KAAKiR,MACZC,IAAKlR,KAAKkR,MAUdrP,EAAMgT,UAAU8nB,WAAa,SAAU1oB,EAAO2tB,GAC5C,MAAO//B,GAAM86B,WAAW38B,KAAKiR,MAAOjR,KAAKkR,IAAK+C,EAAO2tB,IAWvD//B,EAAM86B,WAAa,SAAU1rB,EAAOC,EAAK+C,EAAO2tB,GAI9C,MAHoBx7B,UAAhBw7B,IACFA,EAAc,GAEH,GAAT3tB,GAAc/C,EAAMD,GAAS,GAE7Bia,OAAQja,EACRxM,MAAOwP,GAAS/C,EAAMD,EAAQ2wB,KAI9B1W,OAAQ,EACRzmB,MAAO,IAUb5C,EAAMgT,UAAU0rB,aAAe,SAAUj2B,GACvCtK,KAAK+/B,gBAAkB,EACvB//B,KAAK6hC,cAAgB,EAEhB7hC,KAAK8P,QAAQmwB,UAIbjgC,KAAK8G,MAAMu5B,MAAMyB,gBAEtB9hC,KAAK8G,MAAMu5B,MAAMpvB,MAAQjR,KAAKiR,MAC9BjR,KAAK8G,MAAMu5B,MAAMnvB,IAAMlR,KAAKkR,IAC5BlR,KAAK8G,MAAMu5B,MAAMiB,UAAW,EAExBthC,KAAK+1B,KAAK5E,IAAIzxB,OAChBM,KAAK+1B,KAAK5E,IAAIzxB,KAAK0O,MAAMigB,OAAS,UAStCxsB,EAAMgT,UAAU2rB,QAAU,SAAUl2B,GAElC,GAAKtK,KAAK8P,QAAQmwB,UAKbjgC,KAAK8G,MAAMu5B,MAAMyB,cAAtB,CAEA,GAAIrE,GAAYz9B,KAAK8P,QAAQ2tB,SAC7BoD,GAAkBpD,EAClB,IAAI3N,GAAqB,cAAb2N,EAA4BnzB,EAAMy3B,OAASz3B,EAAM03B,MAC7DlS,IAAS9vB,KAAK+/B,eACd,IAAInM,GAAW5zB,KAAK8G,MAAMu5B,MAAMnvB,IAAMlR,KAAK8G,MAAMu5B,MAAMpvB,MAGnDE,EAAWxP,EAASi7B,yBAAyB58B,KAAK+1B,KAAKI,YAAan2B,KAAKiR,MAAOjR,KAAKkR,IACzF0iB,IAAYziB,CAEZ,IAAI8C,GAAqB,cAAbwpB,EAA4Bz9B,KAAK+1B,KAAKC,SAASzI,OAAOtZ,MAAQjU,KAAK+1B,KAAKC,SAASzI,OAAOrZ,OAChG+tB,GAAanS,EAAQ7b,EAAQ2f,EAC7B6N,EAAWzhC,KAAK8G,MAAMu5B,MAAMpvB,MAAQgxB,EACpCP,EAAS1hC,KAAK8G,MAAMu5B,MAAMnvB,IAAM+wB,EAGhCC,EAAYvgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAasL,EAAUzhC,KAAK6hC,cAAgB/R,GAAO,GACrGqS,EAAUxgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAauL,EAAQ1hC,KAAK6hC,cAAgB/R,GAAO,EACrG,IAAIoS,GAAaT,GAAYU,GAAWT,EAKtC,MAJA1hC,MAAK+/B,iBAAmBjQ,EACxB9vB,KAAK8G,MAAMu5B,MAAMpvB,MAAQixB,EACzBliC,KAAK8G,MAAMu5B,MAAMnvB,IAAMixB,MACvBniC,MAAKwgC,QAAQl2B,EAIftK,MAAK6hC,cAAgB/R,EACrB9vB,KAAK87B,YAAY2F,EAAUC,GAG3B1hC,KAAK+1B,KAAKE,QAAQhH,KAAK,eACrBhe,MAAO,GAAInM,MAAK9E,KAAKiR,OACrBC,IAAK,GAAIpM,MAAK9E,KAAKkR,KACnB6vB,QAAQ,MASZl/B,EAAMgT,UAAU4rB,WAAa,SAAUn2B,GAEhCtK,KAAK8P,QAAQmwB,UAKbjgC,KAAK8G,MAAMu5B,MAAMyB,gBAEtB9hC,KAAK8G,MAAMu5B,MAAMiB,UAAW,EACxBthC,KAAK+1B,KAAK5E,IAAIzxB,OAChBM,KAAK+1B,KAAK5E,IAAIzxB,KAAK0O,MAAMigB,OAAS,QAIpCruB,KAAK+1B,KAAKE,QAAQhH,KAAK,gBACrBhe,MAAO,GAAInM,MAAK9E,KAAKiR,OACrBC,IAAK,GAAIpM,MAAK9E,KAAKkR,KACnB6vB,QAAQ,MAUZl/B,EAAMgT,UAAU6rB,cAAgB,SAAUp2B,GAExC,GAAMtK,KAAK8P,QAAQowB,UAAYlgC,KAAK8P,QAAQmwB,SAA5C,CAGA,GAAInQ,GAAQ,CAcZ,IAbIxlB,EAAMylB,WAERD,EAAQxlB,EAAMylB,WAAa,IAClBzlB,EAAM0lB,SAIfF,GAASxlB,EAAM0lB,OAAS,GAMtBF,EAAO,CAKT,GAAIrrB,EAEFA,GADU,EAARqrB,EACM,EAAIA,EAAQ,EAEZ,GAAK,EAAIA,EAAQ,EAI3B,IAAIsS,GAAUtB,GAAa3tB,EAAG7I,EAAMyuB,MAAO3lB,EAAG9I,EAAM2uB,OAASj5B,KAAK+1B,KAAK5E,IAAI5D,QACvE8U,EAAcriC,KAAKsiC,eAAeF,EAEtCpiC,MAAKuiC,KAAK99B,EAAO49B,EAAavS,GAKhCxlB,EAAMD,mBAORxI,EAAMgT,UAAU8rB,SAAW,SAAUr2B,GACnCtK,KAAK8G,MAAMu5B,MAAMpvB,MAAQjR,KAAKiR,MAC9BjR,KAAK8G,MAAMu5B,MAAMnvB,IAAMlR,KAAKkR,IAC5BlR,KAAK8G,MAAMu5B,MAAMyB,eAAgB,EACjC9hC,KAAK8G,MAAMu5B,MAAM9S,OAAS,KAC1BvtB,KAAKggC,YAAc,EACnBhgC,KAAK+/B,gBAAkB,GAQzBl+B,EAAMgT,UAAU+rB,SAAW,SAAUt2B,GAEnC,GAAMtK,KAAK8P,QAAQowB,UAAYlgC,KAAK8P,QAAQmwB,SAA5C,CAEAjgC,KAAK8G,MAAMu5B,MAAMyB,eAAgB,EAE5B9hC,KAAK8G,MAAMu5B,MAAM9S,SACpBvtB,KAAK8G,MAAMu5B,MAAM9S,OAASuT,EAAWx2B,EAAMijB,OAAQvtB,KAAK+1B,KAAK5E,IAAI5D,QAGnE,IAAI9oB,GAAQ,GAAK6F,EAAM7F,MAAQzE,KAAKggC,aAChCwC,EAAaxiC,KAAKsiC,eAAetiC,KAAK8G,MAAMu5B,MAAM9S,QAElDuP,EAAiBn7B,EAASi7B,yBAAyB58B,KAAK+1B,KAAKI,YAAan2B,KAAKiR,MAAOjR,KAAKkR,KAC3FuxB,EAAuB9gC,EAASy7B,wBAAwBp9B,KAAK+1B,KAAKI,YAAan2B,KAAMwiC,GACrFE,EAAsB5F,EAAiB2F,EAGvChB,EAAWe,EAAaC,GAAwBziC,KAAK8G,MAAMu5B,MAAMpvB,OAASuxB,EAAaC,IAAyBh+B,EAChHi9B,EAASc,EAAaE,GAAuB1iC,KAAK8G,MAAMu5B,MAAMnvB,KAAOsxB,EAAaE,IAAwBj+B,CAG9GzE,MAAK47B,aAA4B,GAAb,EAAIn3B,EACxBzE,KAAK67B,WAA0B,GAAbp3B,EAAQ,CAE1B,IAAIy9B,GAAYvgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAasL,EAAU,EAAIh9B,GAAO,GACpF09B,EAAUxgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAauL,EAAQj9B,EAAQ,GAAG,IAChFy9B,GAAaT,GAAYU,GAAWT,KACtC1hC,KAAK8G,MAAMu5B,MAAMpvB,MAAQixB,EACzBliC,KAAK8G,MAAMu5B,MAAMnvB,IAAMixB,EACvBniC,KAAKggC,YAAc,EAAI11B,EAAM7F,MAC7Bg9B,EAAWS,EACXR,EAASS,GAGXniC,KAAK20B,SAAS8M,EAAUC,GAAQ,GAAO,GAEvC1hC,KAAK47B,cAAe,EACpB57B,KAAK67B,YAAa,IASpBh6B,EAAMgT,UAAUytB,eAAiB,SAAUF,GACzC,GAAIzF,GACAc,EAAYz9B,KAAK8P,QAAQ2tB,SAI7B,IAFAoD,EAAkBpD,GAED,cAAbA,EACF,MAAOz9B,MAAK+1B,KAAKp1B,KAAK+1B,OAAO0L,EAAQjvB,GAAGrL,SAExC,IAAIoM,GAASlU,KAAK+1B,KAAKC,SAASzI,OAAOrZ,MAEvC,OADAyoB,GAAa38B,KAAK28B,WAAWzoB,GACtBkuB,EAAQhvB,EAAIupB,EAAWl4B,MAAQk4B,EAAWzR,QA4BrDrpB,EAAMgT,UAAU0tB,KAAO,SAAU99B,EAAO8oB,EAAQuC,GAEhC,MAAVvC,IACFA,GAAUvtB,KAAKiR,MAAQjR,KAAKkR,KAAO,EAGrC,IAAI4rB,GAAiBn7B,EAASi7B,yBAAyB58B,KAAK+1B,KAAKI,YAAan2B,KAAKiR,MAAOjR,KAAKkR,KAC3FuxB,EAAuB9gC,EAASy7B,wBAAwBp9B,KAAK+1B,KAAKI,YAAan2B,KAAMutB,GACrFmV,EAAsB5F,EAAiB2F,EAGvChB,EAAWlU,EAASkV,GAAwBziC,KAAKiR,OAASsc,EAASkV,IAAyBh+B,EAC5Fi9B,EAASnU,EAASmV,GAAuB1iC,KAAKkR,KAAOqc,EAASmV,IAAwBj+B,CAG1FzE,MAAK47B,aAAe9L,EAAQ,GAAI,GAAQ,EACxC9vB,KAAK67B,YAAc/L,EAAQ,GAAI,GAAQ;;AACvC,GAAIoS,GAAYvgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAasL,EAAU3R,GAAO,GAChFqS,EAAUxgC,EAAS67B,mBAAmBx9B,KAAK+1B,KAAKI,YAAauL,GAAS5R,GAAO,IAC7EoS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGXniC,KAAK20B,SAAS8M,EAAUC,GAAQ,GAAO,GAEvC1hC,KAAK47B,cAAe,EACpB57B,KAAK67B,YAAa,GASpBh6B,EAAMgT,UAAU8tB,KAAO,SAAU7S,GAE/B,GAAIpC,GAAO1tB,KAAKkR,IAAMlR,KAAKiR,MAGvBwwB,EAAWzhC,KAAKiR,MAAQyc,EAAOoC,EAC/B4R,EAAS1hC,KAAKkR,IAAMwc,EAAOoC,CAI/B9vB,MAAKiR,MAAQwwB,EACbzhC,KAAKkR,IAAMwwB,GAOb7/B,EAAMgT,UAAUwU,OAAS,SAAUA,GACjC,GAAIkE,IAAUvtB,KAAKiR,MAAQjR,KAAKkR,KAAO,EAEnCwc,EAAOH,EAASlE,EAGhBoY,EAAWzhC,KAAKiR,MAAQyc,EACxBgU,EAAS1hC,KAAKkR,IAAMwc,CAExB1tB,MAAK20B,SAAS8M,EAAUC,IAG1B7hC,EAAOD,QAAUiC,GAIb,SAAShC,EAAQD,EAASM,GAK9B,GAAI0iC,GAAU,IAMdhjC,GAAQijC,aAAe,SAAU5gC,GAC/BA,EAAM4V,KAAK,SAAUvR,EAAGC,GACtB,MAAOD,GAAE8N,KAAKnD,MAAQ1K,EAAE6N,KAAKnD,SASjCrR,EAAQkjC,WAAa,SAAU7gC,GAC7BA,EAAM4V,KAAK,SAAUvR,EAAGC,GACtB,GAAIw8B,GAAQ,OAASz8B,GAAE8N,KAAO9N,EAAE8N,KAAKlD,IAAM5K,EAAE8N,KAAKnD,MAC9C+xB,EAAQ,OAASz8B,GAAE6N,KAAO7N,EAAE6N,KAAKlD,IAAM3K,EAAE6N,KAAKnD,KAElD,OAAO8xB,GAAQC,KAenBpjC,EAAQkC,MAAQ,SAAUG,EAAOqZ,EAAQ2nB,GACvC,GAAIz8B,GAAG08B,CAEP,IAAID,EAEF,IAAKz8B,EAAI,EAAG08B,EAAOjhC,EAAMyE,OAAYw8B,EAAJ18B,EAAUA,IACzCvE,EAAMuE,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAG08B,EAAOjhC,EAAMyE,OAAYw8B,EAAJ18B,EAAUA,IAAK,CAC9C,GAAIkK,GAAOzO,EAAMuE,EACjB,IAAIkK,EAAK5O,OAAsB,OAAb4O,EAAK9H,IAAc,CAEnC8H,EAAK9H,IAAM0S,EAAO6nB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXnW,EAAI,EAAGoW,EAAKphC,EAAMyE,OAAY28B,EAAJpW,EAAQA,IAAK,CAC9C,GAAItmB,GAAQ1E,EAAMgrB,EAClB,IAAkB,OAAdtmB,EAAMiC,KAAgBjC,IAAU+J,GAAQ/J,EAAM7E,OAASlC,EAAQ0jC,UAAU5yB,EAAM/J,EAAO2U,EAAO5K,MAAO,CACtG0yB,EAAgBz8B,CAChB,QAIiB,MAAjBy8B,IAEF1yB,EAAK9H,IAAMw6B,EAAcx6B,IAAMw6B,EAAclvB,OAASoH,EAAO5K,KAAKuW,gBAE7Dmc,MAYfxjC,EAAQ2jC,QAAU,SAAUthC,EAAOqZ,EAAQkoB,GACzC,GAAIh9B,GAAG08B,EAAMO,CAGb,KAAKj9B,EAAI,EAAG08B,EAAOjhC,EAAMyE,OAAYw8B,EAAJ18B,EAAUA,IACzC,GAA+BJ,SAA3BnE,EAAMuE,GAAG4N,KAAKsvB,SAAwB,CACxCD,EAASnoB,EAAO6nB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUx9B,eAAe09B,IACQ,GAA/BF,EAAUE,GAAUzZ,SAAmBuZ,EAAUE,GAAUv6B,MAAQq6B,EAAUvhC,EAAMuE,GAAG4N,KAAKsvB,UAAUv6B,QACvGs6B,GAAUD,EAAUE,GAAUxvB,OAASoH,EAAO5K,KAAKuW,SAIzDhlB,GAAMuE,GAAGoC,IAAM66B,MAEfxhC,GAAMuE,GAAGoC,IAAM0S,EAAO6nB,MAe5BvjC,EAAQ0jC,UAAY,SAAUh9B,EAAGC,EAAG+U,GAClC,MAAOhV,GAAEoC,KAAO4S,EAAO0L,WAAa4b,EAAUr8B,EAAEmC,KAAOnC,EAAE0N,OAAS3N,EAAEoC,KAAOpC,EAAE2N,MAAQqH,EAAO0L,WAAa4b,EAAUr8B,EAAEmC,MAAQpC,EAAEsC,IAAM0S,EAAO2L,SAAW2b,EAAUr8B,EAAEqC,IAAMrC,EAAE2N,QAAU5N,EAAEsC,IAAMtC,EAAE4N,OAASoH,EAAO2L,SAAW2b,EAAUr8B,EAAEqC,MAKpO,SAAS/I,EAAQD,EAASM,GAkC9B,QAAS6B,GAASkP,EAAOC,EAAKysB,EAAaxH,GAEzCn2B,KAAKu8B,QAAU,GAAIz3B,MACnB9E,KAAKs0B,OAAS,GAAIxvB,MAClB9E,KAAKu0B,KAAO,GAAIzvB,MAEhB9E,KAAK+9B,WAAY,EACjB/9B,KAAKyE,MAAQ,MACbzE,KAAK2pB,KAAO,EAGZ3pB,KAAK20B,SAAS1jB,EAAOC,EAAKysB,GAG1B39B,KAAK08B,aAAc,EACnB18B,KAAKy8B,eAAgB,EACrBz8B,KAAKw8B,cAAe,EACpBx8B,KAAKm2B,YAAcA,EACC/vB,SAAhB+vB,IACFn2B,KAAKm2B,gBAGPn2B,KAAK2jC,OAAS5hC,EAAS6hC,OApDzB,GAAIngC,GAASvD,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAAS6hC,QACPC,aACEC,YAAa,MACbC,OAAQ,IACRC,OAAQ,QACRC,KAAM,QACNC,QAAS,QACTnJ,IAAK,IACLK,MAAO,MACPH,KAAM,QAERkJ,aACEL,YAAa,WACbC,OAAQ,eACRC,OAAQ,aACRC,KAAM,aACNC,QAAS,YACTnJ,IAAK,YACLK,MAAO,OACPH,KAAM,KAUVl5B,EAAS8S,UAAUuvB,UAAY,SAAUT,GACvC,GAAIU,GAAgB1jC,EAAK0G,cAAetF,EAAS6hC,OACjD5jC,MAAK2jC,OAAShjC,EAAK0G,WAAWg9B,EAAeV,IAa/C5hC,EAAS8S,UAAU8f,SAAW,SAAU1jB,EAAOC,EAAKysB,GAClD,KAAM1sB,YAAiBnM,OAAWoM,YAAepM,OAC/C,KAAM,+CAGR9E,MAAKs0B,OAAkBluB,QAAT6K,EAAqB,GAAInM,MAAKmM,EAAMnJ,WAAa,GAAIhD,MACnE9E,KAAKu0B,KAAcnuB,QAAP8K,EAAmB,GAAIpM,MAAKoM,EAAIpJ,WAAa,GAAIhD,MAEzD9E,KAAK+9B,WACP/9B,KAAKs+B,eAAeX,IAOxB57B,EAAS8S,UAAUyvB,MAAQ,WACzBtkC,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKs0B,OAAOxsB,WACpC9H,KAAKi/B,gBAOPl9B,EAAS8S,UAAUoqB,aAAe,WAIhC,OAAQj/B,KAAKyE,OACX,IAAK,OACHzE,KAAKu8B,QAAQgI,YAAYvkC,KAAK2pB,KAAOjlB,KAAKgB,MAAM1F,KAAKu8B,QAAQiI,cAAgBxkC,KAAK2pB,OAClF3pB,KAAKu8B,QAAQkI,SAAS,EACxB,KAAK,QACHzkC,KAAKu8B,QAAQmI,QAAQ,EACvB,KAAK,MACL,IAAK,UACH1kC,KAAKu8B,QAAQoI,SAAS,EACxB,KAAK,OACH3kC,KAAKu8B,QAAQqI,WAAW,EAC1B,KAAK,SACH5kC,KAAKu8B,QAAQsI,WAAW,EAC1B,KAAK,SACH7kC,KAAKu8B,QAAQuI,gBAAgB,GAIjC,GAAiB,GAAb9kC,KAAK2pB,KAEP,OAAQ3pB,KAAKyE,OACX,IAAK,cACHzE,KAAKu8B,QAAQuI,gBAAgB9kC,KAAKu8B,QAAQwI,kBAAoB/kC,KAAKu8B,QAAQwI,kBAAoB/kC,KAAK2pB,KAAM,MAC5G,KAAK,SACH3pB,KAAKu8B,QAAQsI,WAAW7kC,KAAKu8B,QAAQyI,aAAehlC,KAAKu8B,QAAQyI,aAAehlC,KAAK2pB,KAAM,MAC7F,KAAK,SACH3pB,KAAKu8B,QAAQqI,WAAW5kC,KAAKu8B,QAAQ0I,aAAejlC,KAAKu8B,QAAQ0I,aAAejlC,KAAK2pB,KAAM,MAC7F,KAAK,OACH3pB,KAAKu8B,QAAQoI,SAAS3kC,KAAKu8B,QAAQ2I,WAAallC,KAAKu8B,QAAQ2I,WAAallC,KAAK2pB,KAAM,MACvF,KAAK,UACL,IAAK,MACH3pB,KAAKu8B,QAAQmI,QAAQ1kC,KAAKu8B,QAAQ4I,UAAY,GAAKnlC,KAAKu8B,QAAQ4I,UAAY,GAAKnlC,KAAK2pB,KAAO,EAAG,MAClG,KAAK,QACH3pB,KAAKu8B,QAAQkI,SAASzkC,KAAKu8B,QAAQ6I,WAAaplC,KAAKu8B,QAAQ6I,WAAaplC,KAAK2pB,KAAM,MACvF,KAAK,OACH3pB,KAAKu8B,QAAQgI,YAAYvkC,KAAKu8B,QAAQiI,cAAgBxkC,KAAKu8B,QAAQiI,cAAgBxkC,KAAK2pB,QAWhG5nB,EAAS8S,UAAUuqB,QAAU,WAC3B,MAAOp/B,MAAKu8B,QAAQz0B,WAAa9H,KAAKu0B,KAAKzsB,WAM7C/F,EAAS8S,UAAUgV,KAAO,WACxB,GAAImJ,GAAOhzB,KAAKu8B,QAAQz0B,SAIxB,IAAI9H,KAAKu8B,QAAQ6I,WAAa,EAC5B,OAAQplC,KAAKyE,OACX,IAAK,cAEHzE,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu8B,QAAQz0B,UAAY9H,KAAK2pB,KAAM,MAC9D,KAAK,SACH3pB,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu8B,QAAQz0B,UAAwB,IAAZ9H,KAAK2pB,KAAa,MACrE,KAAK,SACH3pB,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu8B,QAAQz0B,UAAwB,IAAZ9H,KAAK2pB,KAAc,GAAI,MAC1E,KAAK,OACH3pB,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu8B,QAAQz0B,UAAwB,IAAZ9H,KAAK2pB,KAAc,GAAK,GAEzE,IAAI3c,GAAIhN,KAAKu8B,QAAQ2I,UACrBllC,MAAKu8B,QAAQoI,SAAS33B,EAAIA,EAAIhN,KAAK2pB,KACnC,MACF,KAAK,UACL,IAAK,MACH3pB,KAAKu8B,QAAQmI,QAAQ1kC,KAAKu8B,QAAQ4I,UAAYnlC,KAAK2pB,KAAM,MAC3D,KAAK,QACH3pB,KAAKu8B,QAAQkI,SAASzkC,KAAKu8B,QAAQ6I,WAAaplC,KAAK2pB,KAAM,MAC7D,KAAK,OACH3pB,KAAKu8B,QAAQgI,YAAYvkC,KAAKu8B,QAAQiI,cAAgBxkC,KAAK2pB,UAK/D,QAAQ3pB,KAAKyE,OACX,IAAK,cACHzE,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu8B,QAAQz0B,UAAY9H,KAAK2pB,KAAM,MAC9D,KAAK,SACH3pB,KAAKu8B,QAAQsI,WAAW7kC,KAAKu8B,QAAQyI,aAAehlC,KAAK2pB,KAAM,MACjE,KAAK,SACH3pB,KAAKu8B,QAAQqI,WAAW5kC,KAAKu8B,QAAQ0I,aAAejlC,KAAK2pB,KAAM,MACjE,KAAK,OACH3pB,KAAKu8B,QAAQoI,SAAS3kC,KAAKu8B,QAAQ2I,WAAallC,KAAK2pB,KAAM,MAC7D,KAAK,UACL,IAAK,MACH3pB,KAAKu8B,QAAQmI,QAAQ1kC,KAAKu8B,QAAQ4I,UAAYnlC,KAAK2pB,KAAM,MAC3D,KAAK,QACH3pB,KAAKu8B,QAAQkI,SAASzkC,KAAKu8B,QAAQ6I,WAAaplC,KAAK2pB,KAAM,MAC7D,KAAK,OACH3pB,KAAKu8B,QAAQgI,YAAYvkC,KAAKu8B,QAAQiI,cAAgBxkC,KAAK2pB,MAMjE,GAAiB,GAAb3pB,KAAK2pB,KAEP,OAAQ3pB,KAAKyE,OACX,IAAK,cACCzE,KAAKu8B,QAAQwI,kBAAoB/kC,KAAK2pB,MAAM3pB,KAAKu8B,QAAQuI,gBAAgB,EAAG,MAClF,KAAK,SACC9kC,KAAKu8B,QAAQyI,aAAehlC,KAAK2pB,MAAM3pB,KAAKu8B,QAAQsI,WAAW,EAAG,MACxE,KAAK,SACC7kC,KAAKu8B,QAAQ0I,aAAejlC,KAAK2pB,MAAM3pB,KAAKu8B,QAAQqI,WAAW,EAAG,MACxE,KAAK,OACC5kC,KAAKu8B,QAAQ2I,WAAallC,KAAK2pB,MAAM3pB,KAAKu8B,QAAQoI,SAAS,EAAG,MACpE,KAAK,UACL,IAAK,MACC3kC,KAAKu8B,QAAQ4I,UAAYnlC,KAAK2pB,KAAO,GAAG3pB,KAAKu8B,QAAQmI,QAAQ,EAAG,MACtE,KAAK,QACC1kC,KAAKu8B,QAAQ6I,WAAaplC,KAAK2pB,MAAM3pB,KAAKu8B,QAAQkI,SAAS,EAAG,MACpE,KAAK,QAQLzkC,KAAKu8B,QAAQz0B,WAAakrB,IAC5BhzB,KAAKu8B,QAAU,GAAIz3B,MAAK9E,KAAKu0B,KAAKzsB,YAGpCnG,EAASu6B,oBAAoBl8B,KAAMgzB,IAOrCjxB,EAAS8S,UAAU+U,WAAa,WAC9B,MAAO5pB,MAAKu8B,SAedx6B,EAAS8S,UAAUwwB,SAAW,SAAU7vB,GAClCA,GAAiC,gBAAhBA,GAAO/Q,QAC1BzE,KAAKyE,MAAQ+Q,EAAO/Q,MACpBzE,KAAK2pB,KAAOnU,EAAOmU,KAAO,EAAInU,EAAOmU,KAAO,EAC5C3pB,KAAK+9B,WAAY,IAQrBh8B,EAAS8S,UAAUywB,aAAe,SAAUC,GAC1CvlC,KAAK+9B,UAAYwH,GAOnBxjC,EAAS8S,UAAUypB,eAAiB,SAAUX,GAC5C,GAAmBv3B,QAAfu3B,EAAJ,CAMA,GAAI6H,GAAW,QACXC,EAAY,OACZC,EAAU,MACVC,EAAW,KACXC,EAAa,IACbC,EAAa,IACbC,EAAkB,CAGP,KAAXN,EAAkB7H,IACpB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,KAEnB,IAAX6b,EAAiB7H,IACnB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,KAEnB,IAAX6b,EAAiB7H,IACnB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,KAEnB,GAAX6b,EAAgB7H,IAClB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,IAEnB,GAAX6b,EAAgB7H,IAClB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,IAEnB,EAAX6b,EAAe7H,IACjB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,GAE9B6b,EAAW7H,IACb39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,GAElB,EAAZ8b,EAAgB9H,IAClB39B,KAAKyE,MAAQ,QAAQzE,KAAK2pB,KAAO,GAE/B8b,EAAY9H,IACd39B,KAAKyE,MAAQ,QAAQzE,KAAK2pB,KAAO,GAErB,EAAV+b,EAAc/H,IAChB39B,KAAKyE,MAAQ,MAAMzE,KAAK2pB,KAAO,GAEnB,EAAV+b,EAAc/H,IAChB39B,KAAKyE,MAAQ,MAAMzE,KAAK2pB,KAAO,GAE7B+b,EAAU/H,IACZ39B,KAAKyE,MAAQ,MAAMzE,KAAK2pB,KAAO,GAE7B+b,EAAU,EAAI/H,IAChB39B,KAAKyE,MAAQ,UAAUzE,KAAK2pB,KAAO,GAEtB,EAAXgc,EAAehI,IACjB39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,GAE9Bgc,EAAWhI,IACb39B,KAAKyE,MAAQ,OAAOzE,KAAK2pB,KAAO,GAEjB,GAAbic,EAAkBjI,IACpB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,IAEnB,GAAbic,EAAkBjI,IACpB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,IAEnB,EAAbic,EAAiBjI,IACnB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,GAEhCic,EAAajI,IACf39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,GAEnB,GAAbkc,EAAkBlI,IACpB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,IAEnB,GAAbkc,EAAkBlI,IACpB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,IAEnB,EAAbkc,EAAiBlI,IACnB39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,GAEhCkc,EAAalI,IACf39B,KAAKyE,MAAQ,SAASzE,KAAK2pB,KAAO,GAEd,IAAlBmc,EAAwBnI,IAC1B39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,KAEnB,IAAlBmc,EAAwBnI,IAC1B39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,KAEnB,GAAlBmc,EAAuBnI,IACzB39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,IAEnB,GAAlBmc,EAAuBnI,IACzB39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,IAEnB,EAAlBmc,EAAsBnI,IACxB39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,GAErCmc,EAAkBnI,IACpB39B,KAAKyE,MAAQ,cAAczE,KAAK2pB,KAAO,KAc3C5nB,EAASo3B,KAAO,SAAUgC,EAAM12B,EAAOklB,GACrC,GAAImR,GAAQ,GAAIh2B,MAAKq2B,EAAKrzB,UAE1B,IAAa,QAATrD,EAAiB,CACnB,GAAIw2B,GAAOH,EAAM0J,cAAgB9/B,KAAKqqB,MAAM+L,EAAMsK,WAAa,GAC/DtK,GAAMyJ,YAAY7/B,KAAKqqB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM2J,SAAS,GACf3J,EAAM4J,QAAQ,GACd5J,EAAM6J,SAAS,GACf7J,EAAM8J,WAAW,GACjB9J,EAAM+J,WAAW,GACjB/J,EAAMgK,gBAAgB,OACjB,IAAa,SAATrgC,EACLq2B,EAAMqK,UAAY,IACpBrK,EAAM4J,QAAQ,GACd5J,EAAM2J,SAAS3J,EAAMsK,WAAa,IAGlCtK,EAAM4J,QAAQ,GAGhB5J,EAAM6J,SAAS,GACf7J,EAAM8J,WAAW,GACjB9J,EAAM+J,WAAW,GACjB/J,EAAMgK,gBAAgB,OACjB,IAAa,OAATrgC,EAAgB,CAEzB,OAAQklB,GACN,IAAK,GACL,IAAK,GACHmR,EAAM6J,SAA6C,GAApCjgC,KAAKqqB,MAAM+L,EAAMoK,WAAa,IAAU,MACzD,SACEpK,EAAM6J,SAA6C,GAApCjgC,KAAKqqB,MAAM+L,EAAMoK,WAAa,KAEjDpK,EAAM8J,WAAW,GACjB9J,EAAM+J,WAAW,GACjB/J,EAAMgK,gBAAgB,OACjB,IAAa,WAATrgC,EAAoB,CAE7B,OAAQklB,GACN,IAAK,GACL,IAAK,GACHmR,EAAM6J,SAA6C,GAApCjgC,KAAKqqB,MAAM+L,EAAMoK,WAAa,IAAU,MACzD,SACEpK,EAAM6J,SAA4C,EAAnCjgC,KAAKqqB,MAAM+L,EAAMoK,WAAa,IAEjDpK,EAAM8J,WAAW,GACjB9J,EAAM+J,WAAW,GACjB/J,EAAMgK,gBAAgB,OACjB,IAAa,QAATrgC,EAAiB,CAC1B,OAAQklB,GACN,IAAK,GACHmR,EAAM8J,WAAiD,GAAtClgC,KAAKqqB,MAAM+L,EAAMmK,aAAe,IAAU,MAC7D,SACEnK,EAAM8J,WAAiD,GAAtClgC,KAAKqqB,MAAM+L,EAAMmK,aAAe,KAErDnK,EAAM+J,WAAW,GACjB/J,EAAMgK,gBAAgB,OACjB,IAAa,UAATrgC,EAAmB,CAE5B,OAAQklB,GACN,IAAK,IACL,IAAK,IACHmR,EAAM8J,WAAgD,EAArClgC,KAAKqqB,MAAM+L,EAAMmK,aAAe,IACjDnK,EAAM+J,WAAW,EACjB,MACF,KAAK,GACH/J,EAAM+J,WAAiD,GAAtCngC,KAAKqqB,MAAM+L,EAAMkK,aAAe,IAAU,MAC7D,SACElK,EAAM+J,WAAiD,GAAtCngC,KAAKqqB,MAAM+L,EAAMkK,aAAe,KAErDlK,EAAMgK,gBAAgB,OACjB,IAAa,UAATrgC,EAET,OAAQklB,GACN,IAAK,IACL,IAAK,IACHmR,EAAM+J,WAAgD,EAArCngC,KAAKqqB,MAAM+L,EAAMkK,aAAe,IACjDlK,EAAMgK,gBAAgB,EACtB,MACF,KAAK,GACHhK,EAAMgK,gBAA6D,IAA7CpgC,KAAKqqB,MAAM+L,EAAMiK,kBAAoB,KAAc,MAC3E,SACEjK,EAAMgK,gBAA4D,IAA5CpgC,KAAKqqB,MAAM+L,EAAMiK,kBAAoB,UAE1D,IAAa,eAATtgC,EAAwB,CACjC,GAAI+vB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMgK,gBAAgBpgC,KAAKqqB,MAAM+L,EAAMiK,kBAAoBvQ,GAASA,GAGtE,MAAOsG,IAQT/4B,EAAS8S,UAAU4qB,QAAU,WAC3B,GAAyB,GAArBz/B,KAAKw8B,aAEP,OADAx8B,KAAKw8B,cAAe,EACZx8B,KAAKyE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAEN,IAA0B,GAAtBzE,KAAKy8B,cAEd,OADAz8B,KAAKy8B,eAAgB,EACbz8B,KAAKyE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAEN,IAAwB,GAApBzE,KAAK08B,YAEd,OADA18B,KAAK08B,aAAc,EACX18B,KAAKyE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQzE,KAAKyE,OACX,IAAK,cACH,MAAyC,IAAlCzE,KAAKu8B,QAAQwI,iBACtB,KAAK,SACH,MAAoC,IAA7B/kC,KAAKu8B,QAAQyI,YACtB,KAAK,SACH,MAAkC,IAA3BhlC,KAAKu8B,QAAQ2I,YAAgD,GAA7BllC,KAAKu8B,QAAQ0I,YACtD,KAAK,OACH,MAAkC,IAA3BjlC,KAAKu8B,QAAQ2I,UACtB,KAAK,UACL,IAAK,MACH,MAAiC,IAA1BllC,KAAKu8B,QAAQ4I,SACtB,KAAK,QACH,MAAkC,IAA3BnlC,KAAKu8B,QAAQ6I,UACtB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAUbrjC,EAAS8S,UAAUkxB,cAAgB,SAAU5K,GAC/B/0B,QAAR+0B,IACFA,EAAOn7B,KAAKu8B,QAGd,IAAIoH,GAAS3jC,KAAK2jC,OAAOE,YAAY7jC,KAAKyE,MAC1C,OAAOk/B,IAAUA,EAAOj9B,OAAS,EAAIjD,EAAO03B,GAAMwI,OAAOA,GAAU,IASrE5hC,EAAS8S,UAAUmxB,cAAgB,SAAU7K,GAC/B/0B,QAAR+0B,IACFA,EAAOn7B,KAAKu8B,QAGd,IAAIoH,GAAS3jC,KAAK2jC,OAAOQ,YAAYnkC,KAAKyE,MAC1C,OAAOk/B,IAAUA,EAAOj9B,OAAS,EAAIjD,EAAO03B,GAAMwI,OAAOA,GAAU,IAGrE5hC,EAAS8S,UAAUoxB,aAAe,WAKhC,QAASC,GAAK1hC,GACZ,MAAOA,GAAQmlB,EAAO,GAAK,EAAI,QAAU,OAG3C,QAASwc,GAAMhL,GACb,MAAIA,GAAKiL,OAAO,GAAIthC,MAAQ,OACnB,SAELq2B,EAAKiL,OAAO3iC,IAASkR,IAAI,EAAG,OAAQ,OAC/B,YAELwmB,EAAKiL,OAAO3iC,IAASkR,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAAS0xB,GAAYlL,GACnB,MAAOA,GAAKiL,OAAO,GAAIthC,MAAQ,QAAU,gBAAkB,GAG7D,QAASwhC,GAAanL,GACpB,MAAOA,GAAKiL,OAAO,GAAIthC,MAAQ,SAAW,iBAAmB,GAG/D,QAASyhC,GAAYpL,GACnB,MAAOA,GAAKiL,OAAO,GAAIthC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAItE,GAAIiD,EAAOzD,KAAKu8B,SAChBpB,EAAO36B,EAAEgmC,OAAShmC,EAAEgmC,OAAO,MAAQhmC,EAAEimC,KAAK,MAC1C9c,EAAO3pB,KAAK2pB,IA+BhB,QAAQ3pB,KAAKyE,OACX,IAAK,cACH,MAAOyhC,GAAK/K,EAAK2E,gBAAgBzxB,MAEnC,KAAK,SACH,MAAO63B,GAAK/K,EAAK0E,WAAWxxB,MAE9B,KAAK,SACH,MAAO63B,GAAK/K,EAAKyE,WAAWvxB,MAE9B,KAAK,OACH,GAAIsxB,GAAQxE,EAAKwE,OAIjB,OAHiB,IAAb3/B,KAAK2pB,OACPgW,EAAQA,EAAQ,MAAQA,EAAQ,IAE3B,IAAMA,EAAQwG,EAAMhL,GAAQ+K,EAAK/K,EAAKwE,QAE/C,KAAK,UACH,MAAOxE,GAAKwI,OAAO,QAAQ+C,cAAgBP,EAAMhL,GAAQkL,EAAYlL,GAAQ+K,EAAK/K,EAAKA,OAEzF,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAKwI,OAAO,QAAQ+C,aAChC,OAAO,MAAQ3L,EAAM,IAAMK,EAAQkL,EAAanL,GAAQ+K,EAAKnL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAKwI,OAAO,QAAQ+C,cAAgBJ,EAAanL,GAAQ+K,EAAK/K,EAAKC,QAE5E,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAOsL,EAAYpL,GAAQ+K,EAAKjL,EAElD,SACE,MAAO,KAIbp7B,EAAOD,QAAUmC,GAIb,SAASlC,EAAQD,EAASM,GAgB9B,QAASgC,GAAKkS,EAAMuoB,EAAY7sB,GAC9B9P,KAAKK,GAAK,KACVL,KAAK+K,OAAS,KACd/K,KAAKoU,KAAOA,EACZpU,KAAKmxB,IAAM,KACXnxB,KAAK28B,WAAaA,MAClB38B,KAAK8P,QAAUA,MAEf9P,KAAK2mC,UAAW,EAChB3mC,KAAK4mC,WAAY,EACjB5mC,KAAK6mC,OAAQ,EAEb7mC,KAAK4I,IAAM,KACX5I,KAAK0I,KAAO,KACZ1I,KAAKiU,MAAQ,KACbjU,KAAKkU,OAAS,KA3BhB,GAAIvQ,GAASzD,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAK2S,UAAU/S,OAAQ,EAKvBI,EAAK2S,UAAUiyB,OAAS,WACtB9mC,KAAK2mC,UAAW,EAChB3mC,KAAK6mC,OAAQ,EACT7mC,KAAK4mC,WAAW5mC,KAAKojB,UAM3BlhB,EAAK2S,UAAUkyB,SAAW,WACxB/mC,KAAK2mC,UAAW,EAChB3mC,KAAK6mC,OAAQ,EACT7mC,KAAK4mC,WAAW5mC,KAAKojB,UAQ3BlhB,EAAK2S,UAAU8E,QAAU,SAAUvF,GACjC,GAAI4yB,GAA6B5gC,QAAdgO,EAAKf,OAAsBrT,KAAKoU,KAAKf,OAASe,EAAKf,KAClE2zB,IACFhnC,KAAK+K,OAAOmsB,QAAQ+P,aAAajnC,KAAMoU,EAAKf,OAG9CrT,KAAKoU,KAAOA,EACZpU,KAAK6mC,OAAQ,EACT7mC,KAAK4mC,WAAW5mC,KAAKojB,UAO3BlhB,EAAK2S,UAAUqyB,UAAY,SAAUn8B,GAC/B/K,KAAK4mC,WACP5mC,KAAKmnC,OACLnnC,KAAK+K,OAASA,EACV/K,KAAK+K,QACP/K,KAAKonC,QAGPpnC,KAAK+K,OAASA,GASlB7I,EAAK2S,UAAUwyB,UAAY,SAAUvQ,GAEnC,OAAO,GAOT50B,EAAK2S,UAAUuyB,KAAO,WACpB,OAAO,GAOTllC,EAAK2S,UAAUsyB,KAAO,WACpB,OAAO,GAMTjlC,EAAK2S,UAAUuO,OAAS,aAKxBlhB,EAAK2S,UAAUyyB,YAAc,aAK7BplC,EAAK2S,UAAU0yB,YAAc,aAO7BrlC,EAAK2S,UAAU2yB,qBAAuB,SAAUC,GAC9C,GAAIznC,KAAK2mC,UAAY3mC,KAAK8P,QAAQ43B,SAAS1vB,SAAWhY,KAAKmxB,IAAIwW,aAAc,CAE3E,GAAI9xB,GAAK7V,KAEL2nC,EAAeh1B,SAASM,cAAc,MAC1C00B,GAAa7+B,UAAY,aACzB6+B,EAAaC,MAAQ,mBAGrB,GAAIjkC,GAAOgkC,GAAc1yB,GAAG,MAAO,SAAU3K,GAC3CuL,EAAG9K,OAAO88B,kBAAkBhyB,GAC5BvL,EAAMw9B,oBAGRL,EAAO50B,YAAY80B,GACnB3nC,KAAKmxB,IAAIwW,aAAeA,OACd3nC,KAAK2mC,UAAY3mC,KAAKmxB,IAAIwW,eAEhC3nC,KAAKmxB,IAAIwW,aAAa98B,YACxB7K,KAAKmxB,IAAIwW,aAAa98B,WAAW1G,YAAYnE,KAAKmxB,IAAIwW,cAExD3nC,KAAKmxB,IAAIwW,aAAe,OAS5BzlC,EAAK2S,UAAUkzB,gBAAkB,SAAUn+B,GACzC,GAAIkK,EACJ,IAAI9T,KAAK8P,QAAQk4B,SAAU,CACzB,GAAIzP,GAAWv4B,KAAK+K,OAAOmsB,QAAQC,UAAUvgB,IAAI5W,KAAKK,GACtDyT,GAAU9T,KAAK8P,QAAQk4B,SAASzP,OAEhCzkB,GAAU9T,KAAKoU,KAAKN,OAGtB,IAAI0tB,GAAUxhC,KAAKioC,iBAAiBjoC,KAAK8T,WAAa9T,KAAKioC,iBAAiBn0B,EAC5E,IAAI0tB,EAAS,CAEX,GAAI1tB,YAAmBo0B,SACrBt+B,EAAQ6b,UAAY,GACpB7b,EAAQiJ,YAAYiB,OACf,IAAe1N,QAAX0N,EACTlK,EAAQ6b,UAAY3R,MAEpB,IAAwB,cAAlB9T,KAAKoU,KAAKxM,MAA8CxB,SAAtBpG,KAAKoU,KAAKN,QAChD,KAAM,IAAItQ,OAAM,sCAAwCxD,KAAKK,GAIjEL,MAAK8T,QAAUA,IASnB5R,EAAK2S,UAAUszB,aAAe,SAAUv+B,GACf,MAAnB5J,KAAKoU,KAAKwzB,MACZh+B,EAAQg+B,MAAQ5nC,KAAKoU,KAAKwzB,OAAS,GAEnCh+B,EAAQw+B,gBAAgB,cAS5BlmC,EAAK2S,UAAUwzB,sBAAwB,SAAUz+B,GAC/C,GAAI5J,KAAK8P,QAAQw4B,gBAAkBtoC,KAAK8P,QAAQw4B,eAAe5hC,OAAS,EAAG,CACzE,GAAI6hC,KAEJ,IAAIxhC,MAAMC,QAAQhH,KAAK8P,QAAQw4B,gBAC7BC,EAAavoC,KAAK8P,QAAQw4B,mBACrB,CAAA,GAAmC,OAA/BtoC,KAAK8P,QAAQw4B,eAGtB,MAFAC,GAAanhC,OAAOmH,KAAKvO,KAAKoU,MAKhC,IAAK,GAAI5N,GAAI,EAAGA,EAAI+hC,EAAW7hC,OAAQF,IAAK,CAC1C,GAAIoR,GAAO2wB,EAAW/hC,GAClBhC,EAAQxE,KAAKoU,KAAKwD,EAET,OAATpT,EACFoF,EAAQ4+B,aAAa,QAAU5wB,EAAMpT,GAErCoF,EAAQw+B,gBAAgB,QAAUxwB,MAW1C1V,EAAK2S,UAAU4zB,aAAe,SAAU7+B,GAElC5J,KAAKoO,QACPzN,EAAKiO,cAAchF,EAAS5J,KAAKoO,OACjCpO,KAAKoO,MAAQ,MAIXpO,KAAKoU,KAAKhG,QACZzN,EAAK8N,WAAW7E,EAAS5J,KAAKoU,KAAKhG,OACnCpO,KAAKoO,MAAQpO,KAAKoU,KAAKhG,QAU3BlM,EAAK2S,UAAUozB,iBAAmB,SAAUn0B,GAC1C,MAAuB,gBAAZA,GAA6BA,EACpCA,GAAW,aAAeA,GAAgBA,EAAQ40B,UAC/C50B,GAGTjU,EAAOD,QAAUsC,GAUb,SAASrC,EAAQD,EAASM,GAoB9B,QAASiC,GAAeiS,EAAMuoB,EAAY7sB,GASxC,GARA9P,KAAK8G,OACHgN,SACEG,MAAO,IAGXjU,KAAKqlB,UAAW,EAGZjR,EAAM,CACR,GAAkBhO,QAAdgO,EAAKnD,MACP,KAAM,IAAIzN,OAAM,oCAAsC4Q,EAAK/T,GAE7D,IAAgB+F,QAAZgO,EAAKlD,IACP,KAAM,IAAI1N,OAAM,kCAAoC4Q,EAAK/T,IAI7D6B,EAAK3B,KAAKP,KAAMoU,EAAMuoB,EAAY7sB,GAElC9P,KAAK2oC,cAAe,EApCtB,GACIzmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe0S,UAAY,GAAI3S,GAAK,KAAM,KAAM,MAEhDC,EAAe0S,UAAU+zB,cAAgB,0BACzCzmC,EAAe0S,UAAU/S,OAAQ,EAOjCK,EAAe0S,UAAUwyB,UAAY,SAAUvQ,GAE7C,MAAO92B,MAAKoU,KAAKnD,MAAQ6lB,EAAM5lB,KAAOlR,KAAKoU,KAAKlD,IAAM4lB,EAAM7lB,OAM9D9O,EAAe0S,UAAUuO,OAAS,WAChC,GAAI+N,GAAMnxB,KAAKmxB,GAuBf,IAtBKA,IAEHnxB,KAAKmxB,OACLA,EAAMnxB,KAAKmxB,IAGXA,EAAI0X,IAAMl2B,SAASM,cAAc,OAIjCke,EAAIrd,QAAUnB,SAASM,cAAc,OACrCke,EAAIrd,QAAQhL,UAAY,mBACxBqoB,EAAI0X,IAAIh2B,YAAYse,EAAIrd,SAMxB9T,KAAK6mC,OAAQ,IAIV7mC,KAAK+K,OACR,KAAM,IAAIvH,OAAM,yCAElB,KAAK2tB,EAAI0X,IAAIh+B,WAAY,CACvB,GAAI0C,GAAavN,KAAK+K,OAAOomB,IAAI5jB,UACjC,KAAKA,EACH,KAAM,IAAI/J,OAAM,iEAElB+J,GAAWsF,YAAYse,EAAI0X,KAQ7B,GANA7oC,KAAK4mC,WAAY,EAMb5mC,KAAK6mC,MAAO,CACd7mC,KAAK+nC,gBAAgB/nC,KAAKmxB,IAAIrd,SAC9B9T,KAAKmoC,aAAanoC,KAAKmxB,IAAIrd,SAC3B9T,KAAKqoC,sBAAsBroC,KAAKmxB,IAAIrd,SACpC9T,KAAKyoC,aAAazoC,KAAKmxB,IAAI0X,IAG3B,IAAI//B,IAAa9I,KAAKoU,KAAKtL,UAAY,IAAM9I,KAAKoU,KAAKtL,UAAY,KAAO9I,KAAK2mC,SAAW,gBAAkB,GAC5GxV,GAAI0X,IAAI//B,UAAY9I,KAAK4oC,cAAgB9/B,EAGzC9I,KAAKqlB,SAA6D,WAAlD9a,OAAOu+B,iBAAiB3X,EAAIrd,SAASuR,SAGrDrlB,KAAK8G,MAAMgN,QAAQG,MAAQjU,KAAKmxB,IAAIrd,QAAQ0d,YAC5CxxB,KAAKkU,OAAS,EAEdlU,KAAK6mC,OAAQ,IAQjB1kC,EAAe0S,UAAUuyB,KAAO9kC,EAAUuS,UAAUuyB,KAMpDjlC,EAAe0S,UAAUsyB,KAAO7kC,EAAUuS,UAAUsyB,KAMpDhlC,EAAe0S,UAAUyyB,YAAchlC,EAAUuS,UAAUyyB,YAM3DnlC,EAAe0S,UAAU0yB,YAAc,SAAUjsB,GAC/C,GAAIytB,GAAqC,QAA7B/oC,KAAK8P,QAAQ6lB,WACzB31B,MAAKmxB,IAAIrd,QAAQ1F,MAAMxF,IAAMmgC,EAAQ,GAAK,IAC1C/oC,KAAKmxB,IAAIrd,QAAQ1F,MAAM4W,OAAS+jB,EAAQ,IAAM,EAC9C,IAAI70B,EAGJ,IAA2B9N,SAAvBpG,KAAKoU,KAAKsvB,SAAwB,CAGpC,GAAIsF,GAAehpC,KAAKoU,KAAKsvB,SACzBF,EAAYxjC,KAAK+K,OAAOy4B,UACxByF,EAAgBzF,EAAUwF,GAAc7/B,KAE5C,IAAa,GAAT4/B,EAAe,CAEjB70B,EAASlU,KAAK+K,OAAOy4B,UAAUwF,GAAc90B,OAASoH,EAAO5K,KAAKuW,SAClE/S,GAA2B,GAAjB+0B,EAAqB3tB,EAAO6nB,KAAO,GAAM7nB,EAAO5K,KAAKuW,SAAW,CAC1E,IAAIwc,GAASzjC,KAAK+K,OAAOnC,GACzB,KAAK,GAAI86B,KAAYF,GACfA,EAAUx9B,eAAe09B,IACQ,GAA/BF,EAAUE,GAAUzZ,SAAmBuZ,EAAUE,GAAUv6B,MAAQ8/B,IACrExF,GAAUD,EAAUE,GAAUxvB,OAASoH,EAAO5K,KAAKuW,SAMzDwc,IAA2B,GAAjBwF,EAAqB3tB,EAAO6nB,KAAO,GAAM7nB,EAAO5K,KAAKuW,SAAW,EAC1EjnB,KAAKmxB,IAAI0X,IAAIz6B,MAAMxF,IAAM66B,EAAS,KAClCzjC,KAAKmxB,IAAI0X,IAAIz6B,MAAM4W,OAAS,OAGzB,CACH,GAAIye,GAASzjC,KAAK+K,OAAOnC,IACrBsgC,EAAc,CAClB,KAAK,GAAIxF,KAAYF,GACnB,GAAIA,EAAUx9B,eAAe09B,IACQ,GAA/BF,EAAUE,GAAUzZ,QAAiB,CACvC,GAAIkf,GAAY3F,EAAUE,GAAUxvB,OAASoH,EAAO5K,KAAKuW,QACzDiiB,IAAeC,EACX3F,EAAUE,GAAUv6B,MAAQ8/B,IAC9BxF,GAAU0F,GAKlBj1B,EAASlU,KAAK+K,OAAOy4B,UAAUwF,GAAc90B,OAASoH,EAAO5K,KAAKuW,SAClEjnB,KAAKmxB,IAAI0X,IAAIz6B,MAAMxF,IAAM5I,KAAK+K,OAAOmJ,OAASg1B,EAAczF,EAAS,KACrEzjC,KAAKmxB,IAAI0X,IAAIz6B,MAAM4W,OAAS,QAM1BhlB,MAAK+K,iBAAkBlI,IAEzBqR,EAASxP,KAAKJ,IAAItE,KAAK+K,OAAOmJ,OAAQlU,KAAK+K,OAAOmsB,QAAQnB,KAAKC,SAASzI,OAAOrZ,OAAQlU,KAAK+K,OAAOmsB,QAAQnB,KAAKC,SAASkD,gBAAgBhlB,QACzIlU,KAAKmxB,IAAI0X,IAAIz6B,MAAMxF,IAAMmgC,EAAQ,IAAM,GACvC/oC,KAAKmxB,IAAI0X,IAAIz6B,MAAM4W,OAAS+jB,EAAQ,GAAK,MAEzC70B,EAASlU,KAAK+K,OAAOmJ,OAErBlU,KAAKmxB,IAAI0X,IAAIz6B,MAAMxF,IAAM5I,KAAK+K,OAAOnC,IAAM,KAC3C5I,KAAKmxB,IAAI0X,IAAIz6B,MAAM4W,OAAS,GAGhChlB,MAAKmxB,IAAI0X,IAAIz6B,MAAM8F,OAASA,EAAS,MAGvCrU,EAAOD,QAAUuC,GAIb,SAAStC,EAAQD,EAASM,GAiB9B,QAASkC,GAAQgS,EAAMuoB,EAAY7sB,GAajC,GAZA9P,KAAK8G,OACHoqB,KACEjd,MAAO,EACPC,OAAQ,GAEV+c,MACEhd,MAAO,EACPC,OAAQ,IAKRE,GACgBhO,QAAdgO,EAAKnD,MACP,KAAM,IAAIzN,OAAM,oCAAsC4Q,EAI1DlS,GAAK3B,KAAKP,KAAMoU,EAAMuoB,EAAY7sB,GAhCpC,CAAA,GAAI5N,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQyS,UAAY,GAAI3S,GAAK,KAAM,KAAM,MAOzCE,EAAQyS,UAAUwyB,UAAY,SAAUvQ,GAGtC,GAAIlD,IAAYkD,EAAM5lB,IAAM4lB,EAAM7lB,OAAS,CAC3C,OAAOjR,MAAKoU,KAAKnD,MAAQ6lB,EAAM7lB,MAAQ2iB,GAAY5zB,KAAKoU,KAAKnD,MAAQ6lB,EAAM5lB,IAAM0iB,GAMnFxxB,EAAQyS,UAAUuO,OAAS,WACzB,GAAI+N,GAAMnxB,KAAKmxB,GA6Bf,IA5BKA,IAEHnxB,KAAKmxB,OACLA,EAAMnxB,KAAKmxB,IAGXA,EAAI0X,IAAMl2B,SAASM,cAAc,OAGjCke,EAAIrd,QAAUnB,SAASM,cAAc,OACrCke,EAAIrd,QAAQhL,UAAY,mBACxBqoB,EAAI0X,IAAIh2B,YAAYse,EAAIrd,SAGxBqd,EAAIF,KAAOte,SAASM,cAAc,OAClCke,EAAIF,KAAKnoB,UAAY,WAGrBqoB,EAAID,IAAMve,SAASM,cAAc,OACjCke,EAAID,IAAIpoB,UAAY,UAGpBqoB,EAAI0X,IAAI,iBAAmB7oC,KAE3BA,KAAK6mC,OAAQ,IAIV7mC,KAAK+K,OACR,KAAM,IAAIvH,OAAM,yCAElB,KAAK2tB,EAAI0X,IAAIh+B,WAAY,CACvB,GAAI0uB,GAAav5B,KAAK+K,OAAOomB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAI/1B,OAAM,iEACjC+1B,GAAW1mB,YAAYse,EAAI0X,KAE7B,IAAK1X,EAAIF,KAAKpmB,WAAY,CACxB,GAAI0C,GAAavN,KAAK+K,OAAOomB,IAAI5jB,UACjC,KAAKA,EAAY,KAAM,IAAI/J,OAAM,iEACjC+J,GAAWsF,YAAYse,EAAIF,MAE7B,IAAKE,EAAID,IAAIrmB,WAAY,CACvB,GAAIs4B,GAAOnjC,KAAK+K,OAAOomB,IAAIgS,IAC3B,KAAK51B,EAAY,KAAM,IAAI/J,OAAM,2DACjC2/B,GAAKtwB,YAAYse,EAAID,KAQvB,GANAlxB,KAAK4mC,WAAY,EAMb5mC,KAAK6mC,MAAO,CACd7mC,KAAK+nC,gBAAgB/nC,KAAKmxB,IAAIrd,SAC9B9T,KAAKmoC,aAAanoC,KAAKmxB,IAAI0X,KAC3B7oC,KAAKqoC,sBAAsBroC,KAAKmxB,IAAI0X,KACpC7oC,KAAKyoC,aAAazoC,KAAKmxB,IAAI0X,IAG3B,IAAI//B,IAAa9I,KAAKoU,KAAKtL,UAAY,IAAM9I,KAAKoU,KAAKtL,UAAY,KAAO9I,KAAK2mC,SAAW,gBAAkB,GAC5GxV,GAAI0X,IAAI//B,UAAY,mBAAqBA,EACzCqoB,EAAIF,KAAKnoB,UAAY,oBAAsBA,EAC3CqoB,EAAID,IAAIpoB,UAAY,mBAAqBA,EAGzC9I,KAAK8G,MAAMoqB,IAAIhd,OAASid,EAAID,IAAIQ,aAChC1xB,KAAK8G,MAAMoqB,IAAIjd,MAAQkd,EAAID,IAAIM,YAC/BxxB,KAAK8G,MAAMmqB,KAAKhd,MAAQkd,EAAIF,KAAKO,YACjCxxB,KAAKiU,MAAQkd,EAAI0X,IAAIrX,YACrBxxB,KAAKkU,OAASid,EAAI0X,IAAInX,aAEtB1xB,KAAK6mC,OAAQ,EAGf7mC,KAAKwnC,qBAAqBrW,EAAI0X,MAOhCzmC,EAAQyS,UAAUuyB,KAAO,WAClBpnC,KAAK4mC,WACR5mC,KAAKojB,UAOThhB,EAAQyS,UAAUsyB,KAAO,WACvB,GAAInnC,KAAK4mC,UAAW,CAClB,GAAIzV,GAAMnxB,KAAKmxB,GAEXA,GAAI0X,IAAIh+B,YAAYsmB,EAAI0X,IAAIh+B,WAAW1G,YAAYgtB,EAAI0X,KACvD1X,EAAIF,KAAKpmB,YAAYsmB,EAAIF,KAAKpmB,WAAW1G,YAAYgtB,EAAIF,MACzDE,EAAID,IAAIrmB,YAAYsmB,EAAID,IAAIrmB,WAAW1G,YAAYgtB,EAAID,KAE3DlxB,KAAK4mC,WAAY,IAQrBxkC,EAAQyS,UAAUyyB,YAAc,WAC9B,GAAIr2B,GAAQjR,KAAK28B,WAAWrG,SAASt2B,KAAKoU,KAAKnD,OAC3Cm4B,EAAQppC,KAAK8P,QAAQs5B,KAIZ,UAATA,EACFppC,KAAK0I,KAAOuI,EAAQjR,KAAKiU,MACP,QAATm1B,EACTppC,KAAK0I,KAAOuI,EAGZjR,KAAK0I,KAAOuI,EAAQjR,KAAKiU,MAAQ,EAInCjU,KAAKmxB,IAAI0X,IAAIz6B,MAAM1F,KAAO1I,KAAK0I,KAAO,KAGtC1I,KAAKmxB,IAAIF,KAAK7iB,MAAM1F,KAAOuI,EAAQjR,KAAK8G,MAAMmqB,KAAKhd,MAAQ,EAAI,KAG/DjU,KAAKmxB,IAAID,IAAI9iB,MAAM1F,KAAOuI,EAAQjR,KAAK8G,MAAMoqB,IAAIjd,MAAQ,EAAI,MAO/D7R,EAAQyS,UAAU0yB,YAAc,WAC9B,GAAI5R,GAAc31B,KAAK8P,QAAQ6lB,YAC3BkT,EAAM7oC,KAAKmxB,IAAI0X,IACf5X,EAAOjxB,KAAKmxB,IAAIF,KAChBC,EAAMlxB,KAAKmxB,IAAID,GAEnB,IAAmB,OAAfyE,EACFkT,EAAIz6B,MAAMxF,KAAO5I,KAAK4I,KAAO,GAAK,KAElCqoB,EAAK7iB,MAAMxF,IAAM,IACjBqoB,EAAK7iB,MAAM8F,OAASlU,KAAK+K,OAAOnC,IAAM5I,KAAK4I,IAAM,EAAI,KACrDqoB,EAAK7iB,MAAM4W,OAAS,OACf,CAEL,GAAIqkB,GAAgBrpC,KAAK+K,OAAOmsB,QAAQpwB,MAAMoN,OAC1Cyd,EAAa0X,EAAgBrpC,KAAK+K,OAAOnC,IAAM5I,KAAK+K,OAAOmJ,OAASlU,KAAK4I,GAE7EigC,GAAIz6B,MAAMxF,KAAO5I,KAAK+K,OAAOmJ,OAASlU,KAAK4I,IAAM5I,KAAKkU,QAAU,GAAK,KACrE+c,EAAK7iB,MAAMxF,IAAMygC,EAAgB1X,EAAa,KAC9CV,EAAK7iB,MAAM4W,OAAS,IAGtBkM,EAAI9iB,MAAMxF,KAAO5I,KAAK8G,MAAMoqB,IAAIhd,OAAS,EAAI,MAG/CrU,EAAOD,QAAUwC,GAIb,SAASvC,EAAQD,EAASM,GAgB9B,QAASmC,GAAU+R,EAAMuoB,EAAY7sB,GAcnC,GAbA9P,KAAK8G,OACHoqB,KACEtoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACRo1B,WAAY,IAKZl1B,GACgBhO,QAAdgO,EAAKnD,MACP,KAAM,IAAIzN,OAAM,oCAAsC4Q,EAI1DlS,GAAK3B,KAAKP,KAAMoU,EAAMuoB,EAAY7sB,GAhCpC,GAAI5N,GAAOhC,EAAoB,GAmC/BmC,GAAUwS,UAAY,GAAI3S,GAAK,KAAM,KAAM,MAO3CG,EAAUwS,UAAUwyB,UAAY,SAAUvQ,GAGxC,GAAIlD,IAAYkD,EAAM5lB,IAAM4lB,EAAM7lB,OAAS,CAC3C,OAAOjR,MAAKoU,KAAKnD,MAAQ6lB,EAAM7lB,MAAQ2iB,GAAY5zB,KAAKoU,KAAKnD,MAAQ6lB,EAAM5lB,IAAM0iB,GAMnFvxB,EAAUwS,UAAUuO,OAAS,WAC3B,GAAI+N,GAAMnxB,KAAKmxB,GA0Bf,IAzBKA,IAEHnxB,KAAKmxB,OACLA,EAAMnxB,KAAKmxB,IAGXA,EAAI5d,MAAQZ,SAASM,cAAc,OAInCke,EAAIrd,QAAUnB,SAASM,cAAc,OACrCke,EAAIrd,QAAQhL,UAAY,mBACxBqoB,EAAI5d,MAAMV,YAAYse,EAAIrd,SAG1Bqd,EAAID,IAAMve,SAASM,cAAc,OACjCke,EAAI5d,MAAMV,YAAYse,EAAID,KAG1BC,EAAI5d,MAAM,iBAAmBvT,KAE7BA,KAAK6mC,OAAQ,IAIV7mC,KAAK+K,OACR,KAAM,IAAIvH,OAAM,yCAElB,KAAK2tB,EAAI5d,MAAM1I,WAAY,CACzB,GAAI0uB,GAAav5B,KAAK+K,OAAOomB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAI/1B,OAAM,iEAElB+1B,GAAW1mB,YAAYse,EAAI5d,OAQ7B,GANAvT,KAAK4mC,WAAY,EAMb5mC,KAAK6mC,MAAO,CACd7mC,KAAK+nC,gBAAgB/nC,KAAKmxB,IAAIrd,SAC9B9T,KAAKmoC,aAAanoC,KAAKmxB,IAAI5d,OAC3BvT,KAAKqoC,sBAAsBroC,KAAKmxB,IAAI5d,OACpCvT,KAAKyoC,aAAazoC,KAAKmxB,IAAI5d,MAG3B,IAAIzK,IAAa9I,KAAKoU,KAAKtL,UAAY,IAAM9I,KAAKoU,KAAKtL,UAAY,KAAO9I,KAAK2mC,SAAW,gBAAkB,GAC5GxV,GAAI5d,MAAMzK,UAAY,qBAAuBA,EAC7CqoB,EAAID,IAAIpoB,UAAY,mBAAqBA,EAGzC9I,KAAKiU,MAAQkd,EAAI5d,MAAMie,YACvBxxB,KAAKkU,OAASid,EAAI5d,MAAMme,aACxB1xB,KAAK8G,MAAMoqB,IAAIjd,MAAQkd,EAAID,IAAIM,YAC/BxxB,KAAK8G,MAAMoqB,IAAIhd,OAASid,EAAID,IAAIQ,aAChC1xB,KAAK8G,MAAMgN,QAAQI,OAASid,EAAIrd,QAAQ4d,aAGxCP,EAAIrd,QAAQ1F,MAAMk7B,WAAa,EAAItpC,KAAK8G,MAAMoqB,IAAIjd,MAAQ,KAG1Dkd,EAAID,IAAI9iB,MAAMxF,KAAO5I,KAAKkU,OAASlU,KAAK8G,MAAMoqB,IAAIhd,QAAU,EAAI,KAChEid,EAAID,IAAI9iB,MAAM1F,KAAO1I,KAAK8G,MAAMoqB,IAAIjd,MAAQ,EAAI,KAEhDjU,KAAK6mC,OAAQ,EAGf7mC,KAAKwnC,qBAAqBrW,EAAI5d,QAOhClR,EAAUwS,UAAUuyB,KAAO,WACpBpnC,KAAK4mC,WACR5mC,KAAKojB,UAOT/gB,EAAUwS,UAAUsyB,KAAO,WACrBnnC,KAAK4mC,YACH5mC,KAAKmxB,IAAI5d,MAAM1I,YACjB7K,KAAKmxB,IAAI5d,MAAM1I,WAAW1G,YAAYnE,KAAKmxB,IAAI5d,OAGjDvT,KAAK4mC,WAAY,IAQrBvkC,EAAUwS,UAAUyyB,YAAc,WAChC,GAAIr2B,GAAQjR,KAAK28B,WAAWrG,SAASt2B,KAAKoU,KAAKnD,MAE/CjR,MAAK0I,KAAOuI,EAAQjR,KAAK8G,MAAMoqB,IAAIjd,MAGnCjU,KAAKmxB,IAAI5d,MAAMnF,MAAM1F,KAAO1I,KAAK0I,KAAO,MAO1CrG,EAAUwS,UAAU0yB,YAAc,WAChC,GAAI5R,GAAc31B,KAAK8P,QAAQ6lB,YAC3BpiB,EAAQvT,KAAKmxB,IAAI5d,KAEF,QAAfoiB,EACFpiB,EAAMnF,MAAMxF,IAAM5I,KAAK4I,IAAM,KAE7B2K,EAAMnF,MAAMxF,IAAM5I,KAAK+K,OAAOmJ,OAASlU,KAAK4I,IAAM5I,KAAKkU,OAAS,MAIpErU,EAAOD,QAAUyC,GAIb,SAASxC,EAAQD,EAASM,GAiB9B,QAASoC,GAAU8R,EAAMuoB,EAAY7sB,GASnC,GARA9P,KAAK8G,OACHgN,SACEG,MAAO,IAGXjU,KAAKqlB,UAAW,EAGZjR,EAAM,CACR,GAAkBhO,QAAdgO,EAAKnD,MACP,KAAM,IAAIzN,OAAM,oCAAsC4Q,EAAK/T,GAE7D,IAAgB+F,QAAZgO,EAAKlD,IACP,KAAM,IAAI1N,OAAM,kCAAoC4Q,EAAK/T,IAI7D6B,EAAK3B,KAAKP,KAAMoU,EAAMuoB,EAAY7sB,GA/BpC,GACI5N,IADShC,EAAoB,IACtBA,EAAoB,IAiC/BoC,GAAUuS,UAAY,GAAI3S,GAAK,KAAM,KAAM,MAE3CI,EAAUuS,UAAU+zB,cAAgB,qBAOpCtmC,EAAUuS,UAAUwyB,UAAY,SAAUvQ,GAExC,MAAO92B,MAAKoU,KAAKnD,MAAQ6lB,EAAM5lB,KAAOlR,KAAKoU,KAAKlD,IAAM4lB,EAAM7lB,OAM9D3O,EAAUuS,UAAUuO,OAAS,WAC3B,GAAI+N,GAAMnxB,KAAKmxB,GAsBf,IArBKA,IAEHnxB,KAAKmxB,OACLA,EAAMnxB,KAAKmxB,IAGXA,EAAI0X,IAAMl2B,SAASM,cAAc,OAIjCke,EAAIrd,QAAUnB,SAASM,cAAc,OACrCke,EAAIrd,QAAQhL,UAAY,mBACxBqoB,EAAI0X,IAAIh2B,YAAYse,EAAIrd,SAGxBqd,EAAI0X,IAAI,iBAAmB7oC,KAE3BA,KAAK6mC,OAAQ,IAIV7mC,KAAK+K,OACR,KAAM,IAAIvH,OAAM,yCAElB,KAAK2tB,EAAI0X,IAAIh+B,WAAY,CACvB,GAAI0uB,GAAav5B,KAAK+K,OAAOomB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAI/1B,OAAM,iEAElB+1B,GAAW1mB,YAAYse,EAAI0X,KAQ7B,GANA7oC,KAAK4mC,WAAY,EAMb5mC,KAAK6mC,MAAO,CACd7mC,KAAK+nC,gBAAgB/nC,KAAKmxB,IAAIrd,SAC9B9T,KAAKmoC,aAAanoC,KAAKmxB,IAAI0X,KAC3B7oC,KAAKqoC,sBAAsBroC,KAAKmxB,IAAI0X,KACpC7oC,KAAKyoC,aAAazoC,KAAKmxB,IAAI0X,IAG3B,IAAI//B,IAAa9I,KAAKoU,KAAKtL,UAAY,IAAM9I,KAAKoU,KAAKtL,UAAY,KAAO9I,KAAK2mC,SAAW,gBAAkB,GAC5GxV,GAAI0X,IAAI//B,UAAY9I,KAAK4oC,cAAgB9/B,EAGzC9I,KAAKqlB,SAA6D,WAAlD9a,OAAOu+B,iBAAiB3X,EAAIrd,SAASuR,SAKrDrlB,KAAKmxB,IAAIrd,QAAQ1F,MAAMm7B,SAAW,OAClCvpC,KAAK8G,MAAMgN,QAAQG,MAAQjU,KAAKmxB,IAAIrd,QAAQ0d,YAC5CxxB,KAAKkU,OAASlU,KAAKmxB,IAAI0X,IAAInX,aAC3B1xB,KAAKmxB,IAAIrd,QAAQ1F,MAAMm7B,SAAW,GAElCvpC,KAAK6mC,OAAQ,EAGf7mC,KAAKwnC,qBAAqBrW,EAAI0X,KAC9B7oC,KAAKwpC,mBACLxpC,KAAKypC,qBAOPnnC,EAAUuS,UAAUuyB,KAAO,WACpBpnC,KAAK4mC,WACR5mC,KAAKojB,UAQT9gB,EAAUuS,UAAUsyB,KAAO,WACzB,GAAInnC,KAAK4mC,UAAW,CAClB,GAAIiC,GAAM7oC,KAAKmxB,IAAI0X,GAEfA,GAAIh+B,YACNg+B,EAAIh+B,WAAW1G,YAAY0kC,GAG7B7oC,KAAK4mC,WAAY,IAarBtkC,EAAUuS,UAAUyyB,YAAc,SAAUoC,GAC1C,GAGIC,GACApY,EAJAqY,EAAc5pC,KAAK+K,OAAOkJ,MAC1BhD,EAAQjR,KAAK28B,WAAWrG,SAASt2B,KAAKoU,KAAKnD,OAC3CC,EAAMlR,KAAK28B,WAAWrG,SAASt2B,KAAKoU,KAAKlD,MAK3B9K,SAAdsjC,GAA2BA,KAAc,MAC9BE,EAAT34B,IACFA,GAAS24B,GAEP14B,EAAM,EAAI04B,IACZ14B,EAAM,EAAI04B,GAGd,IAAIC,GAAWnlC,KAAKJ,IAAI4M,EAAMD,EAAO,EAmBrC,QAjBIjR,KAAKqlB,UACPrlB,KAAK0I,KAAOuI,EACZjR,KAAKiU,MAAQ41B,EAAW7pC,KAAK8G,MAAMgN,QAAQG,MAC3Csd,EAAevxB,KAAK8G,MAAMgN,QAAQG,QAMlCjU,KAAK0I,KAAOuI,EACZjR,KAAKiU,MAAQ41B,EACbtY,EAAe7sB,KAAKL,IAAI6M,EAAMD,EAAQ,EAAIjR,KAAK8P,QAAQ0V,QAASxlB,KAAK8G,MAAMgN,QAAQG,QAGrFjU,KAAKmxB,IAAI0X,IAAIz6B,MAAM1F,KAAO1I,KAAK0I,KAAO,KACtC1I,KAAKmxB,IAAI0X,IAAIz6B,MAAM6F,MAAQ41B,EAAW,KAE9B7pC,KAAK8P,QAAQs5B,OACnB,IAAK,OACHppC,KAAKmxB,IAAIrd,QAAQ1F,MAAM1F,KAAO,GAC9B,MAEF,KAAK,QACH1I,KAAKmxB,IAAIrd,QAAQ1F,MAAM1F,KAAOhE,KAAKJ,IAAIulC,EAAWtY,EAAe,EAAIvxB,KAAK8P,QAAQ0V,QAAS,GAAK,IAChG,MAEF,KAAK,SACHxlB,KAAKmxB,IAAIrd,QAAQ1F,MAAM1F,KAAOhE,KAAKJ,KAAKulC,EAAWtY,EAAe,EAAIvxB,KAAK8P,QAAQ0V,SAAW,EAAG,GAAK,IACtG,MAEF,SAKMmkB,EAFA3pC,KAAKqlB,SACHnU,EAAM,EACMxM,KAAKJ,KAAK2M,EAAO,IAEhBsgB,EAGL,EAARtgB,EACYvM,KAAKL,KAAK4M,EAAOC,EAAMD,EAAQsgB,EAAe,EAAIvxB,KAAK8P,QAAQ0V,SAG/D,EAGlBxlB,KAAKmxB,IAAIrd,QAAQ1F,MAAM1F,KAAOihC,EAAc,OAQlDrnC,EAAUuS,UAAU0yB,YAAc,WAChC,GAAI5R,GAAc31B,KAAK8P,QAAQ6lB,YAC3BkT,EAAM7oC,KAAKmxB,IAAI0X,GAEA,QAAflT,EACFkT,EAAIz6B,MAAMxF,IAAM5I,KAAK4I,IAAM,KAE3BigC,EAAIz6B,MAAMxF,IAAM5I,KAAK+K,OAAOmJ,OAASlU,KAAK4I,IAAM5I,KAAKkU,OAAS,MAQlE5R,EAAUuS,UAAU20B,iBAAmB,WACrC,GAAIxpC,KAAK2mC,UAAY3mC,KAAK8P,QAAQ43B,SAASoC,aAAe9pC,KAAKmxB,IAAI4Y,SAAU,CAE3E,GAAIA,GAAWp3B,SAASM,cAAc,MACtC82B,GAASjhC,UAAY,gBACrBihC,EAASC,aAAehqC,KAExBA,KAAKmxB,IAAI0X,IAAIh2B,YAAYk3B,GACzB/pC,KAAKmxB,IAAI4Y,SAAWA,OACV/pC,KAAK2mC,UAAY3mC,KAAKmxB,IAAI4Y,WAEhC/pC,KAAKmxB,IAAI4Y,SAASl/B,YACpB7K,KAAKmxB,IAAI4Y,SAASl/B,WAAW1G,YAAYnE,KAAKmxB,IAAI4Y,UAEpD/pC,KAAKmxB,IAAI4Y,SAAW,OAQxBznC,EAAUuS,UAAU40B,kBAAoB,WACtC,GAAIzpC,KAAK2mC,UAAY3mC,KAAK8P,QAAQ43B,SAASoC,aAAe9pC,KAAKmxB,IAAI8Y,UAAW,CAE5E,GAAIA,GAAYt3B,SAASM,cAAc,MACvCg3B,GAAUnhC,UAAY,iBACtBmhC,EAAUC,cAAgBlqC,KAE1BA,KAAKmxB,IAAI0X,IAAIh2B,YAAYo3B,GACzBjqC,KAAKmxB,IAAI8Y,UAAYA,OACXjqC,KAAK2mC,UAAY3mC,KAAKmxB,IAAI8Y,YAEhCjqC,KAAKmxB,IAAI8Y,UAAUp/B,YACrB7K,KAAKmxB,IAAI8Y,UAAUp/B,WAAW1G,YAAYnE,KAAKmxB,IAAI8Y,WAErDjqC,KAAKmxB,IAAI8Y,UAAY,OAIzBpqC,EAAOD,QAAU0C,GAIb,SAASzC,EAAQD,EAASM,GAS9B,QAASqC,GAAUwzB,EAAMjmB,GACvB9P,KAAK8P,QAAU,KACf9P,KAAK8G,MAAQ,KAQfvE,EAAUsS,UAAUD,WAAa,SAAU9E,GACrCA,GACFnP,KAAKiG,OAAO5G,KAAK8P,QAASA,IAQ9BvN,EAAUsS,UAAUuO,OAAS,WAE3B,OAAO,GAMT7gB,EAAUsS,UAAUG,QAAU,aAQ9BzS,EAAUsS,UAAUs1B,WAAa,WAC/B,GAAIC,GAAUpqC,KAAK8G,MAAMujC,iBAAmBrqC,KAAK8G,MAAMmN,OAASjU,KAAK8G,MAAMwjC,kBAAoBtqC,KAAK8G,MAAMoN,MAK1G,OAHAlU,MAAK8G,MAAMujC,eAAiBrqC,KAAK8G,MAAMmN,MACvCjU,KAAK8G,MAAMwjC,gBAAkBtqC,KAAK8G,MAAMoN,OAEjCk2B,GAGTvqC,EAAOD,QAAU2C,GAMb,SAAS1C,EAAQD,EAASM,GAiB9B,QAASsC,GAAYuzB,EAAMjmB,GACzB9P,KAAK+1B,KAAOA,EAGZ/1B,KAAKy1B,gBACH8U,iBAAiB,EAEjBC,QAASA,EACThE,OAAQ,MAEVxmC,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBACpCz1B,KAAKkrB,OAAS,EAEdlrB,KAAK81B,UAEL91B,KAAK4U,WAAW9E,GA5BlB,GAAInP,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChCuD,EAASvD,EAAoB,IAC7BsqC,EAAUtqC,EAAoB,GA4BlCsC,GAAYqS,UAAY,GAAItS,GAM5BC,EAAYqS,UAAUihB,QAAU,WAC9B,GAAI7C,GAAMtgB,SAASM,cAAc,MACjCggB,GAAInqB,UAAY,mBAChBmqB,EAAI7kB,MAAMgX,SAAW,WACrB6N,EAAI7kB,MAAMxF,IAAM,MAChBqqB,EAAI7kB,MAAM8F,OAAS,OAEnBlU,KAAKizB,IAAMA,GAMbzwB,EAAYqS,UAAUG,QAAU,WAC9BhV,KAAK8P,QAAQy6B,iBAAkB,EAC/BvqC,KAAKojB,SAELpjB,KAAK+1B,KAAO,MAQdvzB,EAAYqS,UAAUD,WAAa,SAAU9E,GACvCA,GAEFnP,EAAKkG,iBAAiB,kBAAmB,SAAU,WAAY7G,KAAK8P,QAASA,IAQjFtN,EAAYqS,UAAUuO,OAAS,WAC7B,GAAIpjB,KAAK8P,QAAQy6B,gBAAiB,CAChC,GAAIx/B,GAAS/K,KAAK+1B,KAAK5E,IAAIsZ,kBACvBzqC,MAAKizB,IAAIpoB,YAAcE,IAErB/K,KAAKizB,IAAIpoB,YACX7K,KAAKizB,IAAIpoB,WAAW1G,YAAYnE,KAAKizB,KAEvCloB,EAAO8H,YAAY7S,KAAKizB,KAExBjzB,KAAKiR,QAGP,IAAIyuB,GAAM,GAAI56B,OAAK,GAAIA,OAAOgD,UAAY9H,KAAKkrB,QAC3C/X,EAAInT,KAAK+1B,KAAKp1B,KAAK21B,SAASoJ,GAE5B8G,EAASxmC,KAAK8P,QAAQ06B,QAAQxqC,KAAK8P,QAAQ02B,OAC1CA,KACExmC,KAAK0qC,SACRrP,QAAQtG,IAAI,6BAAgC/0B,KAAK8P,QAAQ02B,OAAS,sEAClExmC,KAAK0qC,QAAS,GAEhBlE,EAASxmC,KAAK8P,QAAQ06B,QAAQG,GAEhC,IAAI/C,GAAQpB,EAAOjK,QAAU,IAAMiK,EAAOpN,KAAO,KAAO31B,EAAOi8B,GAAKiE,OAAO,8BAC3EiE,GAAQA,EAAMhhB,OAAO,GAAGgkB,cAAgBhD,EAAMiD,UAAU,GAExD7qC,KAAKizB,IAAI7kB,MAAM1F,KAAOyK,EAAI,KAC1BnT,KAAKizB,IAAI2U,MAAQA,MAGb5nC,MAAKizB,IAAIpoB,YACX7K,KAAKizB,IAAIpoB,WAAW1G,YAAYnE,KAAKizB,KAEvCjzB,KAAK0mB,MAGP,QAAO,GAMTlkB,EAAYqS,UAAU5D,MAAQ,WAG5B,QAASsF,KACPV,EAAG6Q,MAGH,IAAIjiB,GAAQoR,EAAGkgB,KAAKe,MAAM6F,WAAW9mB,EAAGkgB,KAAKC,SAASzI,OAAOtZ,OAAOxP,MAChEmvB,EAAW,EAAInvB,EAAQ,EACZ,IAAXmvB,IAAeA,EAAW,IAC1BA,EAAW,MAAMA,EAAW,KAEhC/d,EAAGuN,SAGHvN,EAAGi1B,iBAAmB5vB,WAAW3E,EAAQqd,GAd3C,GAAI/d,GAAK7V,IAiBTuW,MAMF/T,EAAYqS,UAAU6R,KAAO,WACGtgB,SAA1BpG,KAAK8qC,mBACP7vB,aAAajb,KAAK8qC,wBACX9qC,MAAK8qC,mBAUhBtoC,EAAYqS,UAAUk2B,eAAiB,SAAU3R,GAC/C,GAAInqB,GAAItO,EAAKgH,QAAQyxB,EAAM,QAAQtxB,UAC/B43B,GAAM,GAAI56B,OAAOgD,SACrB9H,MAAKkrB,OAASjc,EAAIywB,EAClB1/B,KAAKojB,UAOP5gB,EAAYqS,UAAUm2B,eAAiB,WACrC,MAAO,IAAIlmC,OAAK,GAAIA,OAAOgD,UAAY9H,KAAKkrB,SAG9CrrB,EAAOD,QAAU4C,GAIb,SAAS3C,EAAQD,EAASM,GAmB9B,QAASuC,GAAWszB,EAAMjmB,GACxB9P,KAAK+1B,KAAOA,EAGZ/1B,KAAKy1B,gBACHwV,gBAAgB,EAChBT,QAASA,EACThE,OAAQ,KACRnmC,GAAI,GAENL,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBAEhC3lB,GAAWA,EAAQspB,KACrBp5B,KAAKi3B,WAAannB,EAAQspB,KAE1Bp5B,KAAKi3B,WAAa,GAAInyB,MAGxB9E,KAAKkrC,eAGLlrC,KAAK81B,UAEL91B,KAAK4U,WAAW9E,GAtClB,GAAInM,GAASzD,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChCuD,EAASvD,EAAoB,IAC7BsqC,EAAUtqC,EAAoB,GAqClCuC,GAAWoS,UAAY,GAAItS,GAO3BE,EAAWoS,UAAUD,WAAa,SAAU9E,GACtCA,IAEFnP,EAAKkG,iBAAiB,iBAAkB,SAAU,UAAW,MAAO7G,KAAK8P,QAASA,GAG9E9P,KAAK8P,QAAQzP,IACfL,KAAKojB,WASX3gB,EAAWoS,UAAUihB,QAAU,WAC7B,GAAI7C,GAAMtgB,SAASM,cAAc,MACjCggB,GAAInqB,UAAY,kBAChBmqB,EAAI7kB,MAAMgX,SAAW,WACrB6N,EAAI7kB,MAAMxF,IAAM,MAChBqqB,EAAI7kB,MAAM8F,OAAS,OACnBlU,KAAKizB,IAAMA,CAEX,IAAIkY,GAAOx4B,SAASM,cAAc,MAClCk4B,GAAK/8B,MAAMgX,SAAW,WACtB+lB,EAAK/8B,MAAMxF,IAAM,MACjBuiC,EAAK/8B,MAAM1F,KAAO,QAClByiC,EAAK/8B,MAAM8F,OAAS,OACpBi3B,EAAK/8B,MAAM6F,MAAQ,OACnBgf,EAAIpgB,YAAYs4B,GAGhBnrC,KAAK0D,OAAS,GAAIC,GAAOwnC,GACzBnrC,KAAK0D,OAAOuR,GAAG,WAAYjV,KAAKugC,aAAarK,KAAKl2B,OAClDA,KAAK0D,OAAOuR,GAAG,UAAWjV,KAAKwgC,QAAQtK,KAAKl2B,OAC5CA,KAAK0D,OAAOuR,GAAG,SAAUjV,KAAKygC,WAAWvK,KAAKl2B,QAUhDyC,EAAWoS,UAAUG,QAAU,WAC7BhV,KAAK8P,QAAQm7B,gBAAiB,EAC9BjrC,KAAKojB,SAELpjB,KAAK0D,OAAO6hC,QAAO,GACnBvlC,KAAK0D,OAAS,KAEd1D,KAAK+1B,KAAO,MAOdtzB,EAAWoS,UAAUuO,OAAS,WAC5B,GAAIpjB,KAAK8P,QAAQm7B,eAAgB,CAC/B,GAAIlgC,GAAS/K,KAAK+1B,KAAK5E,IAAIsZ,kBACvBzqC,MAAKizB,IAAIpoB,YAAcE,IAErB/K,KAAKizB,IAAIpoB,YACX7K,KAAKizB,IAAIpoB,WAAW1G,YAAYnE,KAAKizB,KAEvCloB,EAAO8H,YAAY7S,KAAKizB,KAG1B,IAAI9f,GAAInT,KAAK+1B,KAAKp1B,KAAK21B,SAASt2B,KAAKi3B,YAEjCuP,EAASxmC,KAAK8P,QAAQ06B,QAAQxqC,KAAK8P,QAAQ02B,OAC1CA,KACExmC,KAAK0qC,SACRrP,QAAQtG,IAAI,6BAAgC/0B,KAAK8P,QAAQ02B,OAAS,sEAClExmC,KAAK0qC,QAAS,GAEhBlE,EAASxmC,KAAK8P,QAAQ06B,QAAQG,GAEhC,IAAI/C,GAAQpB,EAAOpN,KAAO,KAAO31B,EAAOzD,KAAKi3B,YAAY0M,OAAO,8BAChEiE,GAAQA,EAAMhhB,OAAO,GAAGgkB,cAAgBhD,EAAMiD,UAAU,GAExD7qC,KAAKizB,IAAI7kB,MAAM1F,KAAOyK,EAAI,KAC1BnT,KAAKizB,IAAI2U,MAAQA,MAGb5nC,MAAKizB,IAAIpoB,YACX7K,KAAKizB,IAAIpoB,WAAW1G,YAAYnE,KAAKizB,IAIzC,QAAO,GAOTxwB,EAAWoS,UAAUu2B,cAAgB,SAAUhS,GAC7Cp5B,KAAKi3B,WAAat2B,EAAKgH,QAAQyxB,EAAM,QACrCp5B,KAAKojB,UAOP3gB,EAAWoS,UAAUw2B,cAAgB,WACnC,MAAO,IAAIvmC,MAAK9E,KAAKi3B,WAAWnvB,YAQlCrF,EAAWoS,UAAU0rB,aAAe,SAAUj2B,GAC5CtK,KAAKkrC,YAAY5J,UAAW,EAC5BthC,KAAKkrC,YAAYjU,WAAaj3B,KAAKi3B,WAEnC3sB,EAAMw9B,mBAQRrlC,EAAWoS,UAAU2rB,QAAU,SAAUl2B,GACvC,GAAKtK,KAAKkrC,YAAY5J,SAAtB,CAEA,GAAInuB,GAAInT,KAAK+1B,KAAKp1B,KAAK21B,SAASt2B,KAAKkrC,YAAYjU,YAAc3sB,EAAMy3B,OACjE3I,EAAOp5B,KAAK+1B,KAAKp1B,KAAK+1B,OAAOvjB,EAEjCnT,MAAKorC,cAAchS,GAGnBp5B,KAAK+1B,KAAKE,QAAQhH,KAAK,cACrB5uB,GAAIL,KAAK8P,QAAQzP,GACjB+4B,KAAM,GAAIt0B,MAAK9E,KAAKi3B,WAAWnvB,aAGjCwC,EAAMw9B,oBAQRrlC,EAAWoS,UAAU4rB,WAAa,SAAUn2B,GACrCtK,KAAKkrC,YAAY5J,WAGtBthC,KAAK+1B,KAAKE,QAAQhH,KAAK,eACrB5uB,GAAIL,KAAK8P,QAAQzP,GACjB+4B,KAAM,GAAIt0B,MAAK9E,KAAKi3B,WAAWnvB,aAGjCwC,EAAMw9B,oBAGRjoC,EAAOD,QAAU6C,GAIb,SAAS5C,EAAQD,EAASM,GAiB9B,QAASwC,GAASqzB,EAAMjmB,EAASw7B,EAAKC,GACpCvrC,KAAKK,GAAKM,EAAK6E,aACfxF,KAAK+1B,KAAOA,EAEZ/1B,KAAKy1B,gBACHE,YAAa,OACb6V,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACX93B,MAAO,OACPgW,SAAS,EACT6T,YAAY,EACZD,aACEn1B,MAAQrE,IAAK+B,OAAW9B,IAAK8B,QAC7ByiB,OAASxkB,IAAK+B,OAAW9B,IAAK8B,SAEhCwhC,OACEl/B,MAAQoiB,KAAM1kB,QACdyiB,OAASiC,KAAM1kB,SAEjBu9B,QACEj7B,MAAQ42B,SAAUl5B,QAClByiB,OAASyW,SAAUl5B,UAIvBpG,KAAKurC,iBAAmBA,EACxBvrC,KAAKgsC,aAAeV,EACpBtrC,KAAK8G,SACL9G,KAAKisC,aACHC,SACAC,UACAvE,UAGF5nC,KAAKmxB,OAELnxB,KAAK82B,OAAU7lB,MAAO,EAAGC,IAAK,GAE9BlR,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBACpCz1B,KAAKosC,iBAAmB,EAExBpsC,KAAK4U,WAAW9E,GAChB9P,KAAKiU,MAAQnQ,QAAQ,GAAK9D,KAAK8P,QAAQmE,OAAOtI,QAAQ,KAAM,KAC5D3L,KAAKqsC,SAAWrsC,KAAKiU,MACrBjU,KAAKkU,OAASlU,KAAKgsC,aAAata,aAChC1xB,KAAKk6B,QAAS,EAEdl6B,KAAKssC,WAAa,GAClBtsC,KAAKusC,iBAAmB,GACxBvsC,KAAKwsC,aAAe,GAEpBxsC,KAAKysC,WAAa,EAClBzsC,KAAK0sC,QAAS,EACd1sC,KAAK2sC,eACL3sC,KAAK4sC,cAAe,EAEpB5sC,KAAKu1B,UACLv1B,KAAK6sC,eAAiB,EAGtB7sC,KAAK81B,SAEL,IAAIjgB,GAAK7V,IACTA,MAAK+1B,KAAKE,QAAQhhB,GAAG,eAAgB,WACnCY,EAAGsb,IAAI2b,cAAc1+B,MAAMxF,IAAMiN,EAAGkgB,KAAKC,SAAS+W,UAAY,OAnFlE,GAAIpsC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB;;AAoFnCwC,EAASmS,UAAY,GAAItS,GAEzBG,EAASmS,UAAUm4B,SAAW,SAAUr5B,EAAOs5B,GACxCjtC,KAAKu1B,OAAOvvB,eAAe2N,KAC9B3T,KAAKu1B,OAAO5hB,GAASs5B,GAEvBjtC,KAAK6sC,gBAAkB,GAGzBnqC,EAASmS,UAAUq4B,YAAc,SAAUv5B,EAAOs5B,GAChDjtC,KAAKu1B,OAAO5hB,GAASs5B,GAGvBvqC,EAASmS,UAAUs4B,YAAc,SAAUx5B,GACrC3T,KAAKu1B,OAAOvvB,eAAe2N,WACtB3T,MAAKu1B,OAAO5hB,GACnB3T,KAAK6sC,gBAAkB,IAI3BnqC,EAASmS,UAAUD,WAAa,SAAU9E,GACxC,GAAIA,EAAS,CACX,GAAIsT,IAAS,CACTpjB,MAAK8P,QAAQ6lB,aAAe7lB,EAAQ6lB,aAAuCvvB,SAAxB0J,EAAQ6lB,cAC7DvS,GAAS,EAEX,IAAI7T,IAAU,cAAe,kBAAmB,kBAAmB,QAAS,mBAAoB,mBAAoB,eAAgB,eAAgB,YAAa,QAAS,UAAW,cAAe,QAAS,SAAU,aACvN5O,GAAKkG,gBAAgB0I,EAAQvP,KAAK8P,QAASA,GAE3C9P,KAAKqsC,SAAWvoC,QAAQ,GAAK9D,KAAK8P,QAAQmE,OAAOtI,QAAQ,KAAM,KAEjD,GAAVyX,GAAkBpjB,KAAKmxB,IAAIlQ,QAC7BjhB,KAAKmnC,OACLnnC,KAAKonC,UAQX1kC,EAASmS,UAAUihB,QAAU,WAC3B91B,KAAKmxB,IAAIlQ,MAAQtO,SAASM,cAAc,OACxCjT,KAAKmxB,IAAIlQ,MAAM7S,MAAM6F,MAAQjU,KAAK8P,QAAQmE,MAC1CjU,KAAKmxB,IAAIlQ,MAAM7S,MAAM8F,OAASlU,KAAKkU,OAEnClU,KAAKmxB,IAAI2b,cAAgBn6B,SAASM,cAAc,OAChDjT,KAAKmxB,IAAI2b,cAAc1+B,MAAM6F,MAAQ,OACrCjU,KAAKmxB,IAAI2b,cAAc1+B,MAAM8F,OAASlU,KAAKkU,OAC3ClU,KAAKmxB,IAAI2b,cAAc1+B,MAAMgX,SAAW,WAGxCplB,KAAKsrC,IAAM34B,SAASC,gBAAgB,6BAA8B,OAClE5S,KAAKsrC,IAAIl9B,MAAMgX,SAAW,WAC1BplB,KAAKsrC,IAAIl9B,MAAMxF,IAAM,MACrB5I,KAAKsrC,IAAIl9B,MAAM8F,OAAS,OACxBlU,KAAKsrC,IAAIl9B,MAAM6F,MAAQ,OACvBjU,KAAKsrC,IAAIl9B,MAAMg/B,QAAU,QACzBptC,KAAKmxB,IAAIlQ,MAAMpO,YAAY7S,KAAKsrC,MAGlC5oC,EAASmS,UAAUw4B,kBAAoB,WACrCzsC,EAAQsR,gBAAgBlS,KAAK2sC,YAE7B,IAAIx5B,GACA44B,EAAY/rC,KAAK8P,QAAQi8B,UACzBuB,EAAa,GACbC,EAAa,EACbn6B,EAAIm6B,EAAa,GAAMD,CAGzBn6B,GAD8B,QAA5BnT,KAAK8P,QAAQ6lB,YACX4X,EAEAvtC,KAAKiU,MAAQ83B,EAAYwB,CAG/B,KAAK,GAAI9T,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KACO,GAAhCz5B,KAAKu1B,OAAOkE,GAASxP,SAAkE7jB,SAA9CpG,KAAKurC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cz5B,KAAKurC,iBAAiB1R,WAAWJ,KACvIz5B,KAAKu1B,OAAOkE,GAAS+T,SAASr6B,EAAGC,EAAGpT,KAAK2sC,YAAa3sC,KAAKsrC,IAAKS,EAAWuB,GAC3El6B,GAAKk6B,EAAaC,GAKxB3sC,GAAQ2R,gBAAgBvS,KAAK2sC,aAC7B3sC,KAAK4sC,cAAe,GAGtBlqC,EAASmS,UAAU44B,cAAgB,WACR,GAArBztC,KAAK4sC,eACPhsC,EAAQsR,gBAAgBlS,KAAK2sC,aAC7B/rC,EAAQ2R,gBAAgBvS,KAAK2sC,aAC7B3sC,KAAK4sC,cAAe,IAOxBlqC,EAASmS,UAAUuyB,KAAO,WACxBpnC,KAAKk6B,QAAS,EACTl6B,KAAKmxB,IAAIlQ,MAAMpW,aACc,QAA5B7K,KAAK8P,QAAQ6lB,YACf31B,KAAK+1B,KAAK5E,IAAIzoB,KAAKmK,YAAY7S,KAAKmxB,IAAIlQ,OAExCjhB,KAAK+1B,KAAK5E,IAAItI,MAAMhW,YAAY7S,KAAKmxB,IAAIlQ,QAIxCjhB,KAAKmxB,IAAI2b,cAAcjiC,YAC1B7K,KAAK+1B,KAAK5E,IAAIuc,qBAAqB76B,YAAY7S,KAAKmxB,IAAI2b,gBAO5DpqC,EAASmS,UAAUsyB,KAAO,WACxBnnC,KAAKk6B,QAAS,EACVl6B,KAAKmxB,IAAIlQ,MAAMpW,YACjB7K,KAAKmxB,IAAIlQ,MAAMpW,WAAW1G,YAAYnE,KAAKmxB,IAAIlQ,OAG7CjhB,KAAKmxB,IAAI2b,cAAcjiC,YACzB7K,KAAKmxB,IAAI2b,cAAcjiC,WAAW1G,YAAYnE,KAAKmxB,IAAI2b,gBAU3DpqC,EAASmS,UAAU8f,SAAW,SAAU1jB,EAAOC,GAC1B,GAAflR,KAAK0sC,QAA8C,GAA3B1sC,KAAK8P,QAAQguB,YAA2C,IAArB99B,KAAKwsC,cAC9Dv7B,EAAQ,IACVA,EAAQ,GAGZjR,KAAK82B,MAAM7lB,MAAQA,EACnBjR,KAAK82B,MAAM5lB,IAAMA,GAOnBxO,EAASmS,UAAUuO,OAAS,WAC1B,GAAIgnB,IAAU,EACVuD,EAAe,CAGnB3tC,MAAKmxB,IAAI2b,cAAc1+B,MAAMxF,IAAM5I,KAAK+1B,KAAKC,SAAS+W,UAAY,IAElE,KAAK,GAAItT,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KACO,GAAhCz5B,KAAKu1B,OAAOkE,GAASxP,SAAkE7jB,SAA9CpG,KAAKurC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cz5B,KAAKurC,iBAAiB1R,WAAWJ,IACvIkU,IAIN,IAA2B,GAAvB3tC,KAAK6sC,gBAAuC,GAAhBc,EAC9B3tC,KAAKmnC,WACA,CACLnnC,KAAKonC,OACLpnC,KAAKkU,OAASpQ,OAAO9D,KAAKgsC,aAAa59B,MAAM8F,OAAOvI,QAAQ,KAAM,KAGlE3L,KAAKmxB,IAAI2b,cAAc1+B,MAAM8F,OAASlU,KAAKkU,OAAS,KACpDlU,KAAKiU,MAAgC,GAAxBjU,KAAK8P,QAAQma,QAAkBnmB,QAAQ,GAAK9D,KAAK8P,QAAQmE,OAAOtI,QAAQ,KAAM,KAAO,CAElG,IAAI7E,GAAQ9G,KAAK8G,MACbma,EAAQjhB,KAAKmxB,IAAIlQ,KAGrBA,GAAMnY,UAAY,gBAGlB9I,KAAK4tC,oBAEL,IAAIjY,GAAc31B,KAAK8P,QAAQ6lB,YAC3B6V,EAAkBxrC,KAAK8P,QAAQ07B,gBAC/BC,EAAkBzrC,KAAK8P,QAAQ27B,eAGnC3kC,GAAM+mC,iBAAmBrC,EAAkB1kC,EAAMgnC,gBAAkB,EACnEhnC,EAAMinC,iBAAmBtC,EAAkB3kC,EAAMknC,gBAAkB,EAEnElnC,EAAMmnC,eAAiBjuC,KAAK+1B,KAAK5E,IAAIuc,qBAAqBlc,YAAcxxB,KAAKysC,WAAazsC,KAAKiU,MAAQ,EAAIjU,KAAK8P,QAAQ87B,iBACxH9kC,EAAMonC,gBAAkB,EACxBpnC,EAAMqnC,eAAiBnuC,KAAK+1B,KAAK5E,IAAIuc,qBAAqBlc,YAAcxxB,KAAKysC,WAAazsC,KAAKiU,MAAQ,EAAIjU,KAAK8P,QAAQ67B,iBACxH7kC,EAAMsnC,gBAAkB,EAGL,QAAfzY,GACF1U,EAAM7S,MAAMxF,IAAM,IAClBqY,EAAM7S,MAAM1F,KAAO,IACnBuY,EAAM7S,MAAM4W,OAAS,GACrB/D,EAAM7S,MAAM6F,MAAQjU,KAAKiU,MAAQ,KACjCgN,EAAM7S,MAAM8F,OAASlU,KAAKkU,OAAS,KACnClU,KAAK8G,MAAMmN,MAAQjU,KAAK+1B,KAAKC,SAASttB,KAAKuL,MAC3CjU,KAAK8G,MAAMoN,OAASlU,KAAK+1B,KAAKC,SAASttB,KAAKwL,SAG5C+M,EAAM7S,MAAMxF,IAAM,GAClBqY,EAAM7S,MAAM4W,OAAS,IACrB/D,EAAM7S,MAAM1F,KAAO,IACnBuY,EAAM7S,MAAM6F,MAAQjU,KAAKiU,MAAQ,KACjCgN,EAAM7S,MAAM8F,OAASlU,KAAKkU,OAAS,KACnClU,KAAK8G,MAAMmN,MAAQjU,KAAK+1B,KAAKC,SAASnN,MAAM5U,MAC5CjU,KAAK8G,MAAMoN,OAASlU,KAAK+1B,KAAKC,SAASnN,MAAM3U,QAG/Ck2B,EAAUpqC,KAAKquC,gBACfjE,EAAUpqC,KAAKmqC,cAAgBC,EAEL,GAAtBpqC,KAAK8P,QAAQ47B,MACf1rC,KAAKqtC,oBAELrtC,KAAKytC,gBAGPztC,KAAKsuC,aAAa3Y,GAEpB,MAAOyU,IAOT1nC,EAASmS,UAAUw5B,cAAgB,WACjC,GAAIjE,IAAU,CACdxpC,GAAQsR,gBAAgBlS,KAAKisC,YAAYC,OACzCtrC,EAAQsR,gBAAgBlS,KAAKisC,YAAYE,OAEzC,IAAIxW,GAAc31B,KAAK8P,QAAQ6lB,YAG3BgI,EAAc39B,KAAK0sC,OAAS1sC,KAAK8G,MAAMknC,iBAAmB,GAAKhuC,KAAKusC,iBAEpE5iB,EAAO,GAAI/nB,GAAS5B,KAAK82B,MAAM7lB,MAAOjR,KAAK82B,MAAM5lB,IAAKysB,EAAa39B,KAAKmxB,IAAIlQ,MAAMyQ,aAAc1xB,KAAK8P,QAAQ+tB,YAAY79B,KAAK8P,QAAQ6lB,aAA6B,GAAf31B,KAAK0sC,QAAmB1sC,KAAK8P,QAAQguB,WAG7L99B,MAAK2pB,KAAOA,CAGZ,IAAI2iB,IAActsC,KAAKmxB,IAAIlQ,MAAMyQ,aAAe/H,EAAKwU,WAAan+B,KAAKmxB,IAAIlQ,MAAMyQ,aAAe/H,EAAKuV,gBAAkBvV,EAAKuV,YAAcvV,EAAKwU,WAAaxU,EAAKA,KAEjK3pB,MAAKssC,WAAaA,CAElB,IAAIiC,GAAgBvuC,KAAKkU,OAASo4B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfxuC,KAAK0sC,OAAiB,CACxBJ,EAAatsC,KAAKusC,iBAClBiC,EAAiB9pC,KAAKqqB,MAAM/uB,KAAKmxB,IAAIlQ,MAAMyQ,aAAe4a,EAAaiC,EACvE,KAAK,GAAI/nC,GAAI,EAAO,GAAMgoC,EAAVhoC,EAA0BA,IACxCmjB,EAAK0V,UAIP,IAFAkP,EAAgBvuC,KAAKkU,OAASo4B,EAEL,IAArBtsC,KAAKwsC,cAAiD,GAA3BxsC,KAAK8P,QAAQguB,WAAoB,CAC9D,GAAI2Q,GAAqB9kB,EAAKuU,UAAYvU,EAAKA,KAAO3pB,KAAKwsC,YAC3D,IAAIiC,EAAqB,EACvB,IAAK,GAAIjoC,GAAI,EAAOioC,EAAJjoC,EAAwBA,IACtCmjB,EAAKE,WAEF,IAAyB,EAArB4kB,EACT,IAAK,GAAIjoC,GAAI,GAAQioC,EAALjoC,EAAyBA,IACvCmjB,EAAK0V,gBAKXkP,IAAiB,GAGnBvuC,MAAK0uC,YAAc/kB,EAAKuU,SACxB,IAMIoB,GANAqP,EAAiB,EAGjBrqC,EAAM,CAI+B8B,UAArCpG,KAAK8P,QAAQ6zB,OAAOhO,KACtB2J,EAAWt/B,KAAK8P,QAAQ6zB,OAAOhO,GAAa2J,UAG9Ct/B,KAAK4uC,aAAe,CAEpB,KADA,GAAIx7B,GAAI,EACD9O,EAAMI,KAAKqqB,MAAMwf,IAAgB,CACtC5kB,EAAKE,OACLzW,EAAI1O,KAAKqqB,MAAMzqB,EAAMgoC,GACrBqC,EAAiBrqC,EAAMgoC,CACvB,IAAI7M,GAAU9V,EAAK8V,WAEfz/B,KAAK8P,QAAQ07B,iBAA8B,GAAX/L,GAAmC,GAAfz/B,KAAK0sC,QAAmD,GAAhC1sC,KAAK8P,QAAQ07B,kBAC3FxrC,KAAK6uC,aAAaz7B,EAAI,EAAGuW,EAAKC,WAAW0V,GAAW3J,EAAa,uBAAwB31B,KAAK8G,MAAMgnC,iBAGlGrO,GAAWz/B,KAAK8P,QAAQ27B,iBAAkC,GAAfzrC,KAAK0sC,QAAkD,GAAhC1sC,KAAK8P,QAAQ07B,iBAA2C,GAAfxrC,KAAK0sC,QAA8B,GAAXjN,GACjIrsB,GAAK,GACPpT,KAAK6uC,aAAaz7B,EAAI,EAAGuW,EAAKC,WAAW0V,GAAW3J,EAAa,uBAAwB31B,KAAK8G,MAAMknC,iBAEtGhuC,KAAK8uC,YAAY17B,EAAGuiB,EAAa,oCAAqC31B,KAAK8P,QAAQ67B,iBAAkB3rC,KAAK8G,MAAMqnC,iBAEhHnuC,KAAK8uC,YAAY17B,EAAGuiB,EAAa,oCAAqC31B,KAAK8P,QAAQ87B,iBAAkB5rC,KAAK8G,MAAMmnC,gBAG/F,GAAfjuC,KAAK0sC,QAAkC,GAAhB/iB,EAAK4S,UAC9Bv8B,KAAKwsC,aAAeloC,GAGtBA,IAGiB,GAAftE,KAAK0sC,OACP1sC,KAAKosC,iBAAmBh5B,GAAKpT,KAAK0uC,YAAc/kB,EAAK4S,SAErDv8B,KAAKosC,iBAAmBpsC,KAAKmxB,IAAIlQ,MAAMyQ,aAAe/H,EAAKuV,WAI7D,IAAI6P,GAAa,CACuB3oC,UAApCpG,KAAK8P,QAAQ83B,MAAMjS,IAAuEvvB,SAAzCpG,KAAK8P,QAAQ83B,MAAMjS,GAAa7K,OACnFikB,EAAa/uC,KAAK8G,MAAMkoC,gBAE1B,IAAI9jB,GAA+B,GAAtBlrB,KAAK8P,QAAQ47B,MAAgBhnC,KAAKJ,IAAItE,KAAK8P,QAAQi8B,UAAWgD,GAAc/uC,KAAK8P,QAAQ+7B,aAAe,GAAKkD,EAAa/uC,KAAK8P,QAAQ+7B,aAAe,EAyBnK,OAtBI7rC,MAAK4uC,aAAe5uC,KAAKiU,MAAQiX,GAAkC,GAAxBlrB,KAAK8P,QAAQma,SAC1DjqB,KAAKiU,MAAQjU,KAAK4uC,aAAe1jB,EACjClrB,KAAK8P,QAAQmE,MAAQjU,KAAKiU,MAAQ,KAClCrT,EAAQ2R,gBAAgBvS,KAAKisC,YAAYC,OACzCtrC,EAAQ2R,gBAAgBvS,KAAKisC,YAAYE,QACzCnsC,KAAKojB,SACLgnB,GAAU,GAGHpqC,KAAK4uC,aAAe5uC,KAAKiU,MAAQiX,GAAkC,GAAxBlrB,KAAK8P,QAAQma,SAAmBjqB,KAAKiU,MAAQjU,KAAKqsC,UACpGrsC,KAAKiU,MAAQvP,KAAKJ,IAAItE,KAAKqsC,SAAUrsC,KAAK4uC,aAAe1jB,GACzDlrB,KAAK8P,QAAQmE,MAAQjU,KAAKiU,MAAQ,KAClCrT,EAAQ2R,gBAAgBvS,KAAKisC,YAAYC,OACzCtrC,EAAQ2R,gBAAgBvS,KAAKisC,YAAYE,QACzCnsC,KAAKojB,SACLgnB,GAAU,IAEVxpC,EAAQ2R,gBAAgBvS,KAAKisC,YAAYC,OACzCtrC,EAAQ2R,gBAAgBvS,KAAKisC,YAAYE,QACzC/B,GAAU,GAGLA,GAGT1nC,EAASmS,UAAUo6B,aAAe,SAAUzqC,GAC1C,GAAI0qC,GAAgBlvC,KAAK0uC,YAAclqC,EACnC2qC,EAAiBD,EAAgBlvC,KAAKosC,gBAC1C,OAAO+C,IAGTzsC,EAASmS,UAAUslB,cAAgB,SAAUhnB,GAC3C,MAAOnT,MAAK0uC,YAAcv7B,EAAInT,KAAKosC,kBAYrC1pC,EAASmS,UAAUg6B,aAAe,SAAUz7B,EAAG0X,EAAM6K,EAAa7sB,EAAWsmC,GAE3E,GAAIz7B,GAAQ/S,EAAQkS,cAAc,MAAO9S,KAAKisC,YAAYE,OAAQnsC,KAAKmxB,IAAIlQ,MAC3EtN,GAAM7K,UAAYA,EAClB6K,EAAM8R,UAAYqF,EACC,QAAf6K,GACFhiB,EAAMvF,MAAM1F,KAAO,IAAM1I,KAAK8P,QAAQ+7B,aAAe,KACrDl4B,EAAMvF,MAAM0b,UAAY,UAExBnW,EAAMvF,MAAMya,MAAQ,IAAM7oB,KAAK8P,QAAQ+7B,aAAe,KACtDl4B,EAAMvF,MAAM0b,UAAY,QAG1BnW,EAAMvF,MAAMxF,IAAMwK,EAAI,GAAMg8B,EAAkBpvC,KAAK8P,QAAQg8B,aAAe,KAE1EhhB,GAAQ,EAER,IAAIukB,GAAe3qC,KAAKJ,IAAItE,KAAK8G,MAAMwoC,eAAgBtvC,KAAK8G,MAAMyoC,eAC9DvvC,MAAK4uC,aAAe9jB,EAAKpkB,OAAS2oC,IACpCrvC,KAAK4uC,aAAe9jB,EAAKpkB,OAAS2oC,IAYtC3sC,EAASmS,UAAUi6B,YAAc,SAAU17B,EAAGuiB,EAAa7sB,EAAWoiB,EAAQjX,GAC5E,GAAmB,GAAfjU,KAAK0sC,OAAgB,CACvB,GAAIzb,GAAOrwB,EAAQkS,cAAc,MAAO9S,KAAKisC,YAAYC,MAAOlsC,KAAKmxB,IAAI2b,cACzE7b,GAAKnoB,UAAYA,EACjBmoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK7iB,MAAM1F,KAAO1I,KAAKiU,MAAQiX,EAAS,KAExC+F,EAAK7iB,MAAMya,MAAQ7oB,KAAKiU,MAAQiX,EAAS,KAG3C+F,EAAK7iB,MAAM6F,MAAQA,EAAQ,KAC3Bgd,EAAK7iB,MAAMxF,IAAMwK,EAAI,OASzB1Q,EAASmS,UAAUy5B,aAAe,SAAU3Y,GAI1C,GAHA/0B,EAAQsR,gBAAgBlS,KAAKisC,YAAYrE,OAGDxhC,SAApCpG,KAAK8P,QAAQ83B,MAAMjS,IAAuEvvB,SAAzCpG,KAAK8P,QAAQ83B,MAAMjS,GAAa7K,KAAoB,CACvG,GAAI8c,GAAQhnC,EAAQkS,cAAc,MAAO9S,KAAKisC,YAAYrE,MAAO5nC,KAAKmxB,IAAIlQ,MAC1E2mB,GAAM9+B,UAAY,4BAA8B6sB,EAChDiS,EAAMniB,UAAYzlB,KAAK8P,QAAQ83B,MAAMjS,GAAa7K,KAGJ1kB,SAA1CpG,KAAK8P,QAAQ83B,MAAMjS,GAAavnB,OAClCzN,EAAK8N,WAAWm5B,EAAO5nC,KAAK8P,QAAQ83B,MAAMjS,GAAavnB,OAGtC,QAAfunB,EACFiS,EAAMx5B,MAAM1F,KAAO1I,KAAK8G,MAAMkoC,gBAAkB,KAEhDpH,EAAMx5B,MAAMya,MAAQ7oB,KAAK8G,MAAMkoC,gBAAkB,KAGnDpH,EAAMx5B,MAAM6F,MAAQjU,KAAKkU,OAAS,KAIpCtT,EAAQ2R,gBAAgBvS,KAAKisC,YAAYrE,QAQ3CllC,EAASmS,UAAU+4B,mBAAqB,WAEtC,KAAM,mBAAqB5tC,MAAK8G,OAAQ,CACtC,GAAI0oC,GAAY78B,SAAS88B,eAAe,KACpCC,EAAmB/8B,SAASM,cAAc,MAC9Cy8B,GAAiB5mC,UAAY,mCAC7B4mC,EAAiB78B,YAAY28B,GAC7BxvC,KAAKmxB,IAAIlQ,MAAMpO,YAAY68B,GAE3B1vC,KAAK8G,MAAMgnC,gBAAkB4B,EAAiBrpB,aAC9CrmB,KAAK8G,MAAMyoC,eAAiBG,EAAiBvuB,YAE7CnhB,KAAKmxB,IAAIlQ,MAAM9c,YAAYurC,GAG7B,KAAM,mBAAqB1vC,MAAK8G,OAAQ,CACtC,GAAI6oC,GAAYh9B,SAAS88B,eAAe,KACpCG,EAAmBj9B,SAASM,cAAc,MAC9C28B,GAAiB9mC,UAAY,mCAC7B8mC,EAAiB/8B,YAAY88B,GAC7B3vC,KAAKmxB,IAAIlQ,MAAMpO,YAAY+8B,GAE3B5vC,KAAK8G,MAAMknC,gBAAkB4B,EAAiBvpB,aAC9CrmB,KAAK8G,MAAMwoC,eAAiBM,EAAiBzuB,YAE7CnhB,KAAKmxB,IAAIlQ,MAAM9c,YAAYyrC,GAG7B,KAAM,mBAAqB5vC,MAAK8G,OAAQ,CACtC,GAAI+oC,GAAYl9B,SAAS88B,eAAe,KACpCK,EAAmBn9B,SAASM,cAAc,MAC9C68B,GAAiBhnC,UAAY,mCAC7BgnC,EAAiBj9B,YAAYg9B,GAC7B7vC,KAAKmxB,IAAIlQ,MAAMpO,YAAYi9B,GAE3B9vC,KAAK8G,MAAMkoC,gBAAkBc,EAAiBzpB,aAC9CrmB,KAAK8G,MAAMipC,eAAiBD,EAAiB3uB,YAE7CnhB,KAAKmxB,IAAIlQ,MAAM9c,YAAY2rC,KAI/BjwC,EAAOD,QAAU8C,GAIb,SAAS7C,EAAQD,EAASM,GAoB9B,QAASyC,GAAW0Q,EAAOomB,EAAS3pB,EAASkgC,GAC3ChwC,KAAKK,GAAKo5B,CACV,IAAIlqB,IAAU,WAAY,QAAS,OAAQ,mBAAoB,WAAY,aAAc,SAAU,aACnGvP,MAAK8P,QAAUnP,EAAK2O,sBAAsBC,EAAQO,GAClD9P,KAAKiwC,kBAAwC7pC,SAApBiN,EAAMvK,UAC/B9I,KAAKgwC,yBAA2BA,EAChChwC,KAAKkwC,aAAe,EACpBlwC,KAAKuW,OAAOlD,GACkB,GAA1BrT,KAAKiwC,oBACPjwC,KAAKgwC,yBAAyB,IAAM,GAEtChwC,KAAKm3B,aACLn3B,KAAKiqB,QAA4B7jB,SAAlBiN,EAAM4W,SAAwB,EAAO5W,EAAM4W,QA5B5D,GAAItpB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BiwC,EAAOjwC,EAAoB,IAC3BkwC,EAAMlwC,EAAoB,IAC1BmwC,EAASnwC,EAAoB,GA+BjCyC,GAAWkS,UAAU2iB,SAAW,SAAUv1B,GAC3B,MAATA,GACFjC,KAAKm3B,UAAYl1B,EACQ,GAArBjC,KAAK8P,QAAQ+H,MACf7X,KAAKm3B,UAAUtf,KAAK,SAAUvR,EAAGC,GAC/B,MAAOD,GAAE6M,EAAI5M,EAAE4M,KAInBnT,KAAKm3B,cAQTx0B,EAAWkS,UAAUy7B,gBAAkB,SAAUvpB,GAC/C/mB,KAAKkwC,aAAenpB,GAOtBpkB,EAAWkS,UAAUD,WAAa,SAAU9E,GAC1C,GAAgB1J,SAAZ0J,EAAuB,CACzB,GAAIP,IAAU,WAAY,QAAS,OAAQ,mBAAoB,WAC/D5O,GAAKsG,oBAAoBsI,EAAQvP,KAAK8P,QAASA,GAE/CnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,cACzCnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,cACzCnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,UAErCA,EAAQygC,YACuB,gBAAtBzgC,GAAQygC,YACbzgC,EAAQygC,WAAWC,kBACqB,WAAtC1gC,EAAQygC,WAAWC,gBACrBxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,EACe,WAAtC3gC,EAAQygC,WAAWC,gBAC5BxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,GAEhCzwC,KAAK8P,QAAQygC,WAAWC,gBAAkB,cAC1CxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,KAOhB,QAAtBzwC,KAAK8P,QAAQ1B,MACfpO,KAAK4H,KAAO,GAAIuoC,GAAKnwC,KAAKK,GAAIL,KAAK8P,SACJ,OAAtB9P,KAAK8P,QAAQ1B,MACtBpO,KAAK4H,KAAO,GAAIwoC,GAAIpwC,KAAKK,GAAIL,KAAK8P,SACH,UAAtB9P,KAAK8P,QAAQ1B,QACtBpO,KAAK4H,KAAO,GAAIyoC,GAAOrwC,KAAKK,GAAIL,KAAK8P,WAQzCnN,EAAWkS,UAAU0B,OAAS,SAAUlD,GACtCrT,KAAKqT,MAAQA,EACbrT,KAAK8T,QAAUT,EAAMS,SAAW,QAChC9T,KAAK8I,UAAYuK,EAAMvK,WAAa9I,KAAK8I,WAAa,kBAAoB9I,KAAKgwC,yBAAyB,GAAK,GAC7GhwC,KAAKiqB,QAA4B7jB,SAAlBiN,EAAM4W,SAAwB,EAAO5W,EAAM4W,QAC1DjqB,KAAKoO,MAAQiF,EAAMjF,MACnBpO,KAAK4U,WAAWvB,EAAMvD,UAaxBnN,EAAWkS,UAAU24B,SAAW,SAAUr6B,EAAGC,EAAGjB,EAAeu+B,EAAc3E,EAAWuB,GACtF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAUlwC,EAAQ4R,cAAc,OAAQL,EAAeu+B,EAO3D,IANAI,EAAQr9B,eAAe,KAAM,IAAKN,GAClC29B,EAAQr9B,eAAe,KAAM,IAAKL,EAAIy9B,GACtCC,EAAQr9B,eAAe,KAAM,QAASs4B,GACtC+E,EAAQr9B,eAAe,KAAM,SAAU,EAAIo9B,GAC3CC,EAAQr9B,eAAe,KAAM,QAAS,eAEZ,QAAtBzT,KAAK8P,QAAQ1B,MACfuiC,EAAO/vC,EAAQ4R,cAAc,OAAQL,EAAeu+B,GACpDC,EAAKl9B,eAAe,KAAM,QAASzT,KAAK8I,WACrB1C,SAAfpG,KAAKoO,OACPuiC,EAAKl9B,eAAe,KAAM,QAAS,OAASzT,KAAKoO,OAGnDuiC,EAAKl9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAMC,EAAI,MAAQD,EAAI44B,GAAa,IAAM34B,GAC/C,GAA/BpT,KAAK8P,QAAQihC,OAAOhhC,UACtB6gC,EAAWhwC,EAAQ4R,cAAc,OAAQL,EAAeu+B,GACjB,OAAnC1wC,KAAK8P,QAAQihC,OAAOpb,YACtBib,EAASn9B,eAAe,KAAM,IAAK,IAAMN,EAAI,MAAQC,EAAIy9B,GAAc,IAAM19B,EAAI,IAAMC,EAAI,MAAQD,EAAI44B,GAAa,IAAM34B,EAAI,MAAQD,EAAI44B,GAAa,KAAO34B,EAAIy9B,IAElKD,EAASn9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAMC,EAAI,KAAYD,EAAI,KAAOC,EAAIy9B,GAAc,MAAa19B,EAAI44B,GAAa,KAAO34B,EAAIy9B,GAAc,KAAO19B,EAAI44B,GAAa,IAAM34B,GAEvLw9B,EAASn9B,eAAe,KAAM,QAASzT,KAAK8I,UAAY,mBAGnB,GAAnC9I,KAAK8P,QAAQ0D,WAAWzD,SAC1BnP,EAAQsS,UAAUC,EAAI,GAAM44B,EAAW34B,EAAGpT,KAAMmS,EAAeu+B,OAE5D,CACL,GAAIM,GAAWtsC,KAAKqqB,MAAM,GAAMgd,GAC5BkF,EAAavsC,KAAKqqB,MAAM,GAAMue,GAC9B4D,EAAaxsC,KAAKqqB,MAAM,IAAOue,GAE/BpiB,EAASxmB,KAAKqqB,OAAOgd,EAAY,EAAIiF,GAAY,EAErDpwC,GAAQoT,QAAQb,EAAI,GAAM69B,EAAW9lB,EAAQ9X,EAAIy9B,EAAaI,EAAa,EAAGD,EAAUC,EAAYjxC,KAAK8I,UAAY,WAAYqJ,EAAeu+B,GAChJ9vC,EAAQoT,QAAQb,EAAI,IAAM69B,EAAW9lB,EAAS,EAAG9X,EAAIy9B,EAAaK,EAAa,EAAGF,EAAUE,EAAYlxC,KAAK8I,UAAY,WAAYqJ,EAAeu+B,KAWxJ/tC,EAAWkS,UAAU8kB,UAAY,SAAUoS,EAAWuB,GACpD,GAAIhC,GAAM34B,SAASC,gBAAgB,6BAA8B,MAEjE,OADA5S,MAAKwtC,SAAS,EAAG,GAAMF,KAAgBhC,EAAKS,EAAWuB,IAC9C6D,KAAM7F,EAAK33B,MAAO3T,KAAK8T,QAAS6hB,YAAa31B,KAAK8P,QAAQshC,mBAGrEzuC,EAAWkS,UAAUw8B,UAAY,SAAUC,GACzC,MAAOtxC,MAAK4H,KAAKypC,UAAUC,IAG7B3uC,EAAWkS,UAAU08B,KAAO,SAAU9Y,EAASplB,EAAOm+B,GACpDxxC,KAAK4H,KAAK2pC,KAAK9Y,EAASplB,EAAOm+B,IAGjC3xC,EAAOD,QAAU+C,GAIb,SAAS9C,EAAQD,EAASM,GAc9B,QAAS0C,GAAM62B,EAASrlB,EAAM8iB,GAC5Bl3B,KAAKy5B,QAAUA,EACfz5B,KAAKwjC,aACLxjC,KAAKipC,cAAgB,EACrBjpC,KAAKyxC,gBAAkBr9B,GAAQA,EAAKs9B,cACpC1xC,KAAKk3B,QAAUA,EAEfl3B,KAAKmxB,OACLnxB,KAAK8G,OACH6M,OACEM,MAAO,EACPC,OAAQ,IAGZlU,KAAK8I,UAAY,KAEjB9I,KAAKiC,SACLjC,KAAK2xC,gBACL3xC,KAAKiQ,cACH2hC,WACAC,UAEF7xC,KAAK8xC,kBAAmB,CACxB,IAAIj8B,GAAK7V,IACTA,MAAKk3B,QAAQnB,KAAKE,QAAQhhB,GAAG,mBAAoB,WAC/CY,EAAGi8B,kBAAmB,IAGxB9xC,KAAK81B,UAEL91B,KAAK2Z,QAAQvF,GAxCf,CAAA,GAAIzT,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMiS,UAAUihB,QAAU,WACxB,GAAIniB,GAAQhB,SAASM,cAAc,MACnCU,GAAM7K,UAAY,YAClB9I,KAAKmxB,IAAIxd,MAAQA,CAEjB,IAAIo+B,GAAQp/B,SAASM,cAAc,MACnC8+B,GAAMjpC,UAAY,YAClB6K,EAAMd,YAAYk/B,GAClB/xC,KAAKmxB,IAAI4gB,MAAQA,CAEjB,IAAIxY,GAAa5mB,SAASM,cAAc,MACxCsmB,GAAWzwB,UAAY,YACvBywB,EAAW,kBAAoBv5B,KAC/BA,KAAKmxB,IAAIoI,WAAaA,EAEtBv5B,KAAKmxB,IAAI5jB,WAAaoF,SAASM,cAAc,OAC7CjT,KAAKmxB,IAAI5jB,WAAWzE,UAAY,YAEhC9I,KAAKmxB,IAAIgS,KAAOxwB,SAASM,cAAc,OACvCjT,KAAKmxB,IAAIgS,KAAKr6B,UAAY,YAK1B9I,KAAKmxB,IAAI6gB,OAASr/B,SAASM,cAAc,OACzCjT,KAAKmxB,IAAI6gB,OAAO5jC,MAAMyrB,WAAa,SACnC75B,KAAKmxB,IAAI6gB,OAAOvsB,UAAY,IAC5BzlB,KAAKmxB,IAAI5jB,WAAWsF,YAAY7S,KAAKmxB,IAAI6gB,SAO3CpvC,EAAMiS,UAAU8E,QAAU,SAAUvF,GAElC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmBo0B,SACrBloC,KAAKmxB,IAAI4gB,MAAMl/B,YAAYiB,GACN1N,SAAZ0N,GAAqC,OAAZA,EAClC9T,KAAKmxB,IAAI4gB,MAAMtsB,UAAY3R,EAE3B9T,KAAKmxB,IAAI4gB,MAAMtsB,UAAYzlB,KAAKy5B,SAAW,GAI7Cz5B,KAAKmxB,IAAIxd,MAAMi0B,MAAQxzB,GAAQA,EAAKwzB,OAAS,GAExC5nC,KAAKmxB,IAAI4gB,MAAM7tC,WAGlBvD,EAAKuI,gBAAgBlJ,KAAKmxB,IAAI4gB,MAAO,cAFrCpxC,EAAKkI,aAAa7I,KAAKmxB,IAAI4gB,MAAO,aAMpC,IAAIjpC,GAAYsL,GAAQA,EAAKtL,WAAa,IACtCA,IAAa9I,KAAK8I,YAChB9I,KAAK8I,YACPnI,EAAKuI,gBAAgBlJ,KAAKmxB,IAAIxd,MAAO3T,KAAK8I,WAC1CnI,EAAKuI,gBAAgBlJ,KAAKmxB,IAAIoI,WAAYv5B,KAAK8I,WAC/CnI,EAAKuI,gBAAgBlJ,KAAKmxB,IAAI5jB,WAAYvN,KAAK8I,WAC/CnI,EAAKuI,gBAAgBlJ,KAAKmxB,IAAIgS,KAAMnjC,KAAK8I,YAE3CnI,EAAKkI,aAAa7I,KAAKmxB,IAAIxd,MAAO7K,GAClCnI,EAAKkI,aAAa7I,KAAKmxB,IAAIoI,WAAYzwB,GACvCnI,EAAKkI,aAAa7I,KAAKmxB,IAAI5jB,WAAYzE,GACvCnI,EAAKkI,aAAa7I,KAAKmxB,IAAIgS,KAAMr6B,GACjC9I,KAAK8I,UAAYA,GAIf9I,KAAKoO,QACPzN,EAAKiO,cAAc5O,KAAKmxB,IAAIxd,MAAO,OAAS3T,KAAKoO,OACjDpO,KAAKoO,MAAQ,MAEXgG,GAAQA,EAAKhG,QACfzN,EAAK8N,WAAWzO,KAAKmxB,IAAIxd,MAAO,OAASS,EAAKhG,OAC9CpO,KAAKoO,MAAQgG,EAAKhG,QAQtBxL,EAAMiS,UAAUo9B,cAAgB,WAC9B,MAAOjyC,MAAK8G,MAAM6M,MAAMM,OAU1BrR,EAAMiS,UAAUuO,OAAS,SAAU0T,EAAOxb,EAAQ42B,GAChD,GAAI9H,IAAU,EAIV+H,EAAenyC,KAAKmxB,IAAI6gB,OAAO3rB,YAanC,IAZI8rB,GAAgBnyC,KAAKoyC,mBACvBpyC,KAAKoyC,iBAAmBD,EAExBxxC,EAAK0I,QAAQrJ,KAAKiC,MAAO,SAAUyO,GACjCA,EAAKm2B,OAAQ,EACTn2B,EAAKk2B,WAAWl2B,EAAK0S,WAG3B8uB,GAAU,GAI8B,kBAA/BlyC,MAAKk3B,QAAQpnB,QAAQsH,MAAsB,CAGpD,GAAI86B,EAAS,CAIX,GAAIr8B,GAAK7V,KACL0pC,GAAY,CAChB/oC,GAAK0I,QAAQrJ,KAAKiC,MAAO,SAAUyO,GAC5BA,EAAKk2B,YACRl2B,EAAK0S,SACLvN,EAAG87B,aAAanqC,KAAKkJ,IAEvBA,EAAK42B,YAAYoC,IAInB,IAAI2I,GAAqBryC,KAAKiQ,aAAa2hC,QAAQnlC,QAAQoL,KAAK,SAAUvR,EAAGC,GAC3E,MAAOsP,GAAGqhB,QAAQpnB,QAAQsH,MAAM9Q,EAAE8N,KAAM7N,EAAE6N,OAE5CtS,GAAMA,MAAMuwC,EAAoB/2B,GAAQ,GAG1Ctb,KAAK2xC,aAAe3xC,KAAKsyC,oBAAoBtyC,KAAKiQ,aAAcjQ,KAAK2xC,aAAc7a,OAGnF92B,MAAK2xC,aAAe3xC,KAAKsyC,oBAAoBtyC,KAAKiQ,aAAcjQ,KAAK2xC,aAAc7a,GAE/E92B,KAAKk3B,QAAQpnB,QAAQhO,MAEvBA,EAAMA,MAAM9B,KAAK2xC,aAAcr2B,EAAQ42B,GAGvCpwC,EAAMyhC,QAAQvjC,KAAK2xC,aAAcr2B,EAAQtb,KAAKwjC,UAKlD,IAAItvB,GAASlU,KAAKuyC,iBAAiBj3B,GAG/Bie,EAAav5B,KAAKmxB,IAAIoI,UAC1Bv5B,MAAK4I,IAAM2wB,EAAWiZ,UACtBxyC,KAAK0I,KAAO6wB,EAAWkZ,WACvBzyC,KAAKiU,MAAQslB,EAAW/H,YACxB4Y,EAAUzpC,EAAK8I,eAAezJ,KAAM,SAAUkU,IAAWk2B,EAGzDA,EAAUzpC,EAAK8I,eAAezJ,KAAK8G,MAAM6M,MAAO,QAAS3T,KAAKmxB,IAAI4gB,MAAM5wB,cAAgBipB,EACxFA,EAAUzpC,EAAK8I,eAAezJ,KAAK8G,MAAM6M,MAAO,SAAU3T,KAAKmxB,IAAI4gB,MAAM1rB,eAAiB+jB,EAG1FpqC,KAAKmxB,IAAI5jB,WAAWa,MAAM8F,OAASA,EAAS,KAC5ClU,KAAKmxB,IAAIoI,WAAWnrB,MAAM8F,OAASA,EAAS,KAC5ClU,KAAKmxB,IAAIxd,MAAMvF,MAAM8F,OAASA,EAAS,IAGvC,KAAK,GAAI1N,GAAI,EAAGksC,EAAK1yC,KAAK2xC,aAAajrC,OAAYgsC,EAAJlsC,EAAQA,IAAK,CAC1D,GAAIkK,GAAO1Q,KAAK2xC,aAAanrC,EAC7BkK,GAAK62B,YAAYjsB,GAGnB,MAAO8uB,IASTxnC,EAAMiS,UAAU09B,iBAAmB,SAAUj3B,GAE3C,GAAIpH,GACAy9B,EAAe3xC,KAAK2xC,YAGxB3xC,MAAK2yC,gBACL,IAAI98B,GAAK7V,IACT,IAAI2xC,EAAajrC,OAAS,EAAG,CAC3B,GAAIrC,GAAMstC,EAAa,GAAG/oC,IACtBtE,EAAMqtC,EAAa,GAAG/oC,IAAM+oC,EAAa,GAAGz9B,MAShD,IARAvT,EAAK0I,QAAQsoC,EAAc,SAAUjhC,GACnCrM,EAAMK,KAAKL,IAAIA,EAAKqM,EAAK9H,KACzBtE,EAAMI,KAAKJ,IAAIA,EAAKoM,EAAK9H,IAAM8H,EAAKwD,QACT9N,SAAvBsK,EAAK0D,KAAKsvB,WACZ7tB,EAAG2tB,UAAU9yB,EAAK0D,KAAKsvB,UAAUxvB,OAASxP,KAAKJ,IAAIuR,EAAG2tB,UAAU9yB,EAAK0D,KAAKsvB,UAAUxvB,OAAQxD,EAAKwD,QACjG2B,EAAG2tB,UAAU9yB,EAAK0D,KAAKsvB,UAAUzZ,SAAU,KAG3C5lB,EAAMiX,EAAO6nB,KAAM,CAErB,GAAIjY,GAAS7mB,EAAMiX,EAAO6nB,IAC1B7+B,IAAO4mB,EACPvqB,EAAK0I,QAAQsoC,EAAc,SAAUjhC,GACnCA,EAAK9H,KAAOsiB,IAGhBhX,EAAS5P,EAAMgX,EAAO5K,KAAKuW,SAAW,MAEtC/S,GAAS,CAIX,OAFAA,GAASxP,KAAKJ,IAAI4P,EAAQlU,KAAK8G,MAAM6M,MAAMO,SAQ7CtR,EAAMiS,UAAUuyB,KAAO,WAChBpnC,KAAKmxB,IAAIxd,MAAM9I,YAClB7K,KAAKk3B,QAAQ/F,IAAIqI,SAAS3mB,YAAY7S,KAAKmxB,IAAIxd,OAG5C3T,KAAKmxB,IAAIoI,WAAW1uB,YACvB7K,KAAKk3B,QAAQ/F,IAAIoI,WAAW1mB,YAAY7S,KAAKmxB,IAAIoI,YAG9Cv5B,KAAKmxB,IAAI5jB,WAAW1C,YACvB7K,KAAKk3B,QAAQ/F,IAAI5jB,WAAWsF,YAAY7S,KAAKmxB,IAAI5jB,YAG9CvN,KAAKmxB,IAAIgS,KAAKt4B,YACjB7K,KAAKk3B,QAAQ/F,IAAIgS,KAAKtwB,YAAY7S,KAAKmxB,IAAIgS,OAO/CvgC,EAAMiS,UAAUsyB,KAAO,WACrB,GAAIxzB,GAAQ3T,KAAKmxB,IAAIxd,KACjBA,GAAM9I,YACR8I,EAAM9I,WAAW1G,YAAYwP,EAG/B,IAAI4lB,GAAav5B,KAAKmxB,IAAIoI,UACtBA,GAAW1uB,YACb0uB,EAAW1uB,WAAW1G,YAAYo1B,EAGpC,IAAIhsB,GAAavN,KAAKmxB,IAAI5jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAW1G,YAAYoJ,EAGpC,IAAI41B,GAAOnjC,KAAKmxB,IAAIgS,IAChBA,GAAKt4B,YACPs4B,EAAKt4B,WAAW1G,YAAYg/B,IAQhCvgC,EAAMiS,UAAUF,IAAM,SAAUjE,GAc9B,GAbA1Q,KAAKiC,MAAMyO,EAAKrQ,IAAMqQ,EACtBA,EAAKw2B,UAAUlnC,MAGYoG,SAAvBsK,EAAK0D,KAAKsvB,WAC+Bt9B,SAAvCpG,KAAKwjC,UAAU9yB,EAAK0D,KAAKsvB,YAC3B1jC,KAAKwjC,UAAU9yB,EAAK0D,KAAKsvB,WAAcxvB,OAAQ,EAAG+V,SAAS,EAAO9gB,MAAOnJ,KAAKipC,cAAehnC,UAC7FjC,KAAKipC,iBAEPjpC,KAAKwjC,UAAU9yB,EAAK0D,KAAKsvB,UAAUzhC,MAAMuF,KAAKkJ,IAEhD1Q,KAAK4yC,iBAEkC,IAAnC5yC,KAAK2xC,aAAapqC,QAAQmJ,GAAa,CACzC,GAAIomB,GAAQ92B,KAAKk3B,QAAQnB,KAAKe,KAC9B92B,MAAK6yC,gBAAgBniC,EAAM1Q,KAAK2xC,aAAc7a,KAIlDl0B,EAAMiS,UAAU+9B,eAAiB,WAC/B,GAA6BxsC,SAAzBpG,KAAKyxC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxB9yC,MAAKyxC,gBAA6B,CAC3C,IAAK,GAAI/N,KAAY1jC,MAAKwjC,UACxBsP,EAAUtrC,MAAOk8B,SAAUA,EAAUqP,UAAW/yC,KAAKwjC,UAAUE,GAAUzhC,MAAM,GAAGmS,KAAKpU,KAAKyxC,kBAE9FqB,GAAUj7B,KAAK,SAAUvR,EAAGC,GAC1B,MAAOD,GAAEysC,UAAYxsC,EAAEwsC,gBAEpB,IAAmC,kBAAxB/yC,MAAKyxC,gBAA+B,CACpD,IAAK,GAAI/N,KAAY1jC,MAAKwjC,UACxBsP,EAAUtrC,KAAKxH,KAAKwjC,UAAUE,GAAUzhC,MAAM,GAAGmS,KAEnD0+B,GAAUj7B,KAAK7X,KAAKyxC,iBAGtB,GAAIqB,EAAUpsC,OAAS,EACrB,IAAK,GAAIF,GAAI,EAAGA,EAAIssC,EAAUpsC,OAAQF,IACpCxG,KAAKwjC,UAAUsP,EAAUtsC,GAAGk9B,UAAUv6B,MAAQ3C,IAMtD5D,EAAMiS,UAAU89B,eAAiB,WAC/B,IAAK,GAAIjP,KAAY1jC,MAAKwjC,UACpBxjC,KAAKwjC,UAAUx9B,eAAe09B,KAChC1jC,KAAKwjC,UAAUE,GAAUzZ,SAAU,IASzCrnB,EAAMiS,UAAUmD,OAAS,SAAUtH,SAC1B1Q,MAAKiC,MAAMyO,EAAKrQ,IACvBqQ,EAAKw2B,UAAU,KAGf,IAAI/9B,GAAQnJ,KAAK2xC,aAAapqC,QAAQmJ,EACzB,KAATvH,GAAanJ,KAAK2xC,aAAavoC,OAAOD,EAAO,IASnDvG,EAAMiS,UAAUgzB,kBAAoB,SAAUn3B,GAC5C1Q,KAAKk3B,QAAQ8b,WAAWtiC,EAAKrQ,KAM/BuC,EAAMiS,UAAUuC,MAAQ,WAKtB,IAAK,GAJD5N,GAAQ7I,EAAK4I,QAAQvJ,KAAKiC,OAC1BgxC,KACAC,KAEK1sC,EAAI,EAAGA,EAAIgD,EAAM9C,OAAQF,IACNJ,SAAtBoD,EAAMhD,GAAG4N,KAAKlD,KAChBgiC,EAAS1rC,KAAKgC,EAAMhD,IAEtBysC,EAAWzrC,KAAKgC,EAAMhD,GAExBxG,MAAKiQ,cACH2hC,QAASqB,EACTpB,MAAOqB,GAGTpxC,EAAM+gC,aAAa7iC,KAAKiQ,aAAa2hC,SACrC9vC,EAAMghC,WAAW9iC,KAAKiQ,aAAa4hC,QAWrCjvC,EAAMiS,UAAUy9B,oBAAsB,SAAUriC,EAAckjC,EAAiBrc,GAC7E,GAKIpmB,GAAMlK,EALNmrC,KACAyB,KACAxf,GAAYkD,EAAM5lB,IAAM4lB,EAAM7lB,OAAS,EACvCoiC,EAAavc,EAAM7lB,MAAQ2iB,EAC3B0f,EAAaxc,EAAM5lB,IAAM0iB,EAIzB1jB,EAAiB,SAAwB1L,GAC3C,MAAY6uC,GAAR7uC,EACK,GACW8uC,GAAT9uC,EACF,EAEA,EAOX,IAAI2uC,EAAgBzsC,OAAS,EAC3B,IAAKF,EAAI,EAAGA,EAAI2sC,EAAgBzsC,OAAQF,IACtCxG,KAAKuzC,6BAA6BJ,EAAgB3sC,GAAImrC,EAAcyB,EAAoBtc,EAK5F,IAAI0c,GAAoB7yC,EAAKqP,mBAAmBC,EAAa2hC,QAAS1hC,EAAgB,OAAQ,QAS9F,IANAlQ,KAAKyzC,cAAcD,EAAmBvjC,EAAa2hC,QAASD,EAAcyB,EAAoB,SAAU1iC,GACtG,MAAOA,GAAK0D,KAAKnD,MAAQoiC,GAAc3iC,EAAK0D,KAAKnD,MAAQqiC,IAK9B,GAAzBtzC,KAAK8xC,iBAEP,IADA9xC,KAAK8xC,kBAAmB,EACnBtrC,EAAI,EAAGA,EAAIyJ,EAAa4hC,MAAMnrC,OAAQF,IACzCxG,KAAKuzC,6BAA6BtjC,EAAa4hC,MAAMrrC,GAAImrC,EAAcyB,EAAoBtc,OAExF,CAEL,GAAI4c,GAAkB/yC,EAAKqP,mBAAmBC,EAAa4hC,MAAO3hC,EAAgB,OAAQ,MAG1FlQ,MAAKyzC,cAAcC,EAAiBzjC,EAAa4hC,MAAOF,EAAcyB,EAAoB,SAAU1iC,GAClG,MAAOA,GAAK0D,KAAKlD,IAAMmiC,GAAc3iC,EAAK0D,KAAKlD,IAAMoiC,IAKzD,IAAK9sC,EAAI,EAAGA,EAAImrC,EAAajrC,OAAQF,IACnCkK,EAAOihC,EAAanrC,GACfkK,EAAKk2B,WAAWl2B,EAAK02B,OAE1B12B,EAAK42B,aAgBP,OAAOqK,IAGT/uC,EAAMiS,UAAU4+B,cAAgB,SAAUE,EAAY1xC,EAAO0vC,EAAcyB,EAAoBQ,GAC7F,GAAIljC,GACAlK,CAEJ,IAAkB,IAAdmtC,EAAkB,CACpB,IAAKntC,EAAImtC,EAAYntC,GAAK,IACxBkK,EAAOzO,EAAMuE,IACTotC,EAAeljC,IAFQlK,IAKWJ,SAAhCgtC,EAAmB1iC,EAAKrQ,MAC1B+yC,EAAmB1iC,EAAKrQ,KAAM,EAC9BsxC,EAAanqC,KAAKkJ,GAKxB,KAAKlK,EAAImtC,EAAa,EAAGntC,EAAIvE,EAAMyE,SACjCgK,EAAOzO,EAAMuE,IACTotC,EAAeljC,IAFsBlK,IAKHJ,SAAhCgtC,EAAmB1iC,EAAKrQ,MAC1B+yC,EAAmB1iC,EAAKrQ,KAAM,EAC9BsxC,EAAanqC,KAAKkJ,MAkB5B9N,EAAMiS,UAAUg+B,gBAAkB,SAAUniC,EAAMihC,EAAc7a,GAC1DpmB,EAAK22B,UAAUvQ,IACZpmB,EAAKk2B,WAAWl2B,EAAK02B,OAE1B12B,EAAK42B,cACLqK,EAAanqC,KAAKkJ,IAEdA,EAAKk2B,WAAWl2B,EAAKy2B,QAe7BvkC,EAAMiS,UAAU0+B,6BAA+B,SAAU7iC,EAAMihC,EAAcyB,EAAoBtc,GAC3FpmB,EAAK22B,UAAUvQ,GACmB1wB,SAAhCgtC,EAAmB1iC,EAAKrQ,MAC1B+yC,EAAmB1iC,EAAKrQ,KAAM,EAC9BsxC,EAAanqC,KAAKkJ,IAGhBA,EAAKk2B,WAAWl2B,EAAKy2B,QAI7BtnC,EAAOD,QAAUgD,GAIb,SAAS/C,EAAQD,EAASM,GAa9B,QAAS2C,GAAgB42B,EAASrlB,EAAM8iB,GACtCt0B,EAAMrC,KAAKP,KAAMy5B,EAASrlB,EAAM8iB,GAEhCl3B,KAAKiU,MAAQ,EACbjU,KAAKkU,OAAS,EACdlU,KAAK4I,IAAM,EACX5I,KAAK0I,KAAO,EAfd,GACI9F,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBgS,UAAYzN,OAAOsI,OAAO9M,EAAMiS,WAShDhS,EAAgBgS,UAAUuO,OAAS,SAAU0T,EAAOxb,EAAQ42B,GAC1D,GAAI9H,IAAU,CAEdpqC,MAAK2xC,aAAe3xC,KAAKsyC,oBAAoBtyC,KAAKiQ,aAAcjQ,KAAK2xC,aAAc7a,GAGnF92B,KAAKiU,MAAQjU,KAAKmxB,IAAI5jB,WAAWikB,YAGjCxxB,KAAKmxB,IAAI5jB,WAAWa,MAAM8F,OAAS,GAGnC,KAAK,GAAI1N,GAAI,EAAGksC,EAAK1yC,KAAK2xC,aAAajrC,OAAYgsC,EAAJlsC,EAAQA,IAAK,CAC1D,GAAIkK,GAAO1Q,KAAK2xC,aAAanrC,EAC7BkK,GAAK62B,YAAYjsB,GAGnB,MAAO8uB,IAMTvnC,EAAgBgS,UAAUuyB,KAAO,WAC1BpnC,KAAKmxB,IAAI5jB,WAAW1C,YACvB7K,KAAKk3B,QAAQ/F,IAAI5jB,WAAWsF,YAAY7S,KAAKmxB,IAAI5jB,aAIrD1N,EAAOD,QAAUiD,GAIb,SAAShD,EAAQD,EAASM,GA6B9B,QAAS4C,GAAQizB,EAAMjmB,GACrB9P,KAAK+1B,KAAOA,EAEZ/1B,KAAKy1B,gBACH7tB,KAAM,KACN+tB,YAAa,SACbyT,MAAO,OACPtnC,OAAO,EACP+xC,WAAY,KAEZC,YAAY,EACZpM,UACEoC,YAAY,EACZoD,aAAa,EACbv4B,KAAK,EACLqD,QAAQ,GAGVmhB,KAAMp3B,EAASo3B,KAEf4a,MAAO,SAAerjC,EAAMpH,GAC1BA,EAASoH,IAEXsjC,SAAU,SAAkBtjC,EAAMpH,GAChCA,EAASoH,IAEXujC,OAAQ,SAAgBvjC,EAAMpH,GAC5BA,EAASoH,IAEXwjC,SAAU,SAAkBxjC,EAAMpH,GAChCA,EAASoH,IAEXyjC,SAAU,SAAkBzjC,EAAMpH,GAChCA,EAASoH,IAGX4K,QACE5K,MACEsW,WAAY,GACZC,SAAU,IAEZkc,KAAM,IAER3d,QAAS,GAIXxlB,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBAGpCz1B,KAAKo0C,aACHxsC,MAAQqJ,MAAO,OAAQC,IAAK,SAG9BlR,KAAK28B,YACHrG,SAAUP,EAAKp1B,KAAK21B,SACpBI,OAAQX,EAAKp1B,KAAK+1B,QAEpB12B,KAAKmxB,OACLnxB,KAAK8G,SACL9G,KAAK0D,OAAS,IAEd,IAAImS,GAAK7V,IACTA,MAAKm3B,UAAY,KACjBn3B,KAAKo3B,WAAa,KAGlBp3B,KAAKq0C,eACH1/B,IAAK,SAAarK,EAAOkL,EAAQC,GAC/BI,EAAGy+B,OAAO9+B,EAAOvT,QAEnBsU,OAAQ,SAAgBjM,EAAOkL,EAAQC,GACrCI,EAAG0+B,UAAU/+B,EAAOvT,QAEtB+V,OAAQ,SAAgB1N,EAAOkL,EAAQC,GACrCI,EAAG2+B,UAAUh/B,EAAOvT,SAKxBjC,KAAKy0C,gBACH9/B,IAAK,SAAarK,EAAOkL,EAAQC,GAC/BI,EAAG6+B,aAAal/B,EAAOvT,QAEzBsU,OAAQ,SAAgBjM,EAAOkL,EAAQC,GACrCI,EAAG8+B,gBAAgBn/B,EAAOvT,QAE5B+V,OAAQ,SAAgB1N,EAAOkL,EAAQC,GACrCI,EAAG++B,gBAAgBp/B,EAAOvT,SAI9BjC,KAAKiC,SACLjC,KAAKu1B,UACLv1B,KAAK60C,YAEL70C,KAAK80C,aACL90C,KAAK+0C,YAAa,EAElB/0C,KAAKg1C,eAGLh1C,KAAK81B,UAEL91B,KAAK4U,WAAW9E,GAjIlB,GAAInM,GAASzD,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAErC+0C,EAAY,gBACZC,EAAa,gBAsHjBpyC,GAAQ+R,UAAY,GAAItS,GAGxBO,EAAQ+V,OACNtL,WAAYpL,EACZ0mC,IAAKzmC,EACL00B,MAAOx0B,EACPiR,MAAOlR,GAMTS,EAAQ+R,UAAUihB,QAAU,WAC1B,GAAI7U,GAAQtO,SAASM,cAAc,MACnCgO,GAAMnY,UAAY,cAClBmY,EAAM,oBAAsBjhB,KAC5BA,KAAKmxB,IAAIlQ,MAAQA,CAGjB,IAAI1T,GAAaoF,SAASM,cAAc,MACxC1F,GAAWzE,UAAY,iBACvBmY,EAAMpO,YAAYtF,GAClBvN,KAAKmxB,IAAI5jB,WAAaA,CAGtB,IAAIgsB,GAAa5mB,SAASM,cAAc,MACxCsmB,GAAWzwB,UAAY,iBACvBmY,EAAMpO,YAAY0mB,GAClBv5B,KAAKmxB,IAAIoI,WAAaA,CAGtB,IAAI4J,GAAOxwB,SAASM,cAAc,MAClCkwB,GAAKr6B,UAAY,WACjB9I,KAAKmxB,IAAIgS,KAAOA,CAGhB,IAAI3J,GAAW7mB,SAASM,cAAc,MACtCumB,GAAS1wB,UAAY,eACrB9I,KAAKmxB,IAAIqI,SAAWA,EAGpBx5B,KAAKm1C,kBAGL,IAAIC,GAAkB,GAAIvyC,GAAgBqyC,EAAY,KAAMl1C,KAC5Do1C,GAAgBhO,OAChBpnC,KAAKu1B,OAAO2f,GAAcE,EAM1Bp1C,KAAK0D,OAAS,GAAIC,GAAO3D,KAAK+1B,KAAK5E,IAAI+H,iBAGvCl5B,KAAK0D,OAAOuR,GAAG,eAAgB,SAAW3K,GACpCA,EAAM+qC,SACRr1C,KAAK2gC,SAASr2B,IAEf4rB,KAAKl2B,OACRA,KAAK0D,OAAOuR,GAAG,WAAYjV,KAAKugC,aAAarK,KAAKl2B,OAClDA,KAAK0D,OAAOuR,GAAG,UAAWjV,KAAKwgC,QAAQtK,KAAKl2B,OAC5CA,KAAK0D,OAAOuR,GAAG,SAAUjV,KAAKygC,WAAWvK,KAAKl2B,OAG9CA,KAAK0D,OAAOuR,GAAG,MAAOjV,KAAKs1C,cAAcpf,KAAKl2B,OAG9CA,KAAK0D,OAAOuR,GAAG,QAASjV,KAAKu1C,mBAAmBrf,KAAKl2B,OAGrDA,KAAK0D,OAAOuR,GAAG,YAAajV,KAAKw1C,WAAWtf,KAAKl2B,OAGjDA,KAAKonC,QAmEPtkC,EAAQ+R,UAAUD,WAAa,SAAU9E,GACvC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAY,OAAQ,OAC9H5O,GAAKkG,gBAAgB0I,EAAQvP,KAAK8P,QAASA,GAEvC,eAAiBA,KACgB,gBAAxBA,GAAQ6lB,YACjB31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YACK,gBAAxB7lB,GAAQ6lB,aAA4B,QAAU7lB,GAAQ6lB,cACtE31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YAAYjlB,OAI/C,UAAYZ,KACgB,gBAAnBA,GAAQwL,QACjBtb,KAAK8P,QAAQwL,OAAO6nB,KAAOrzB,EAAQwL,OACnCtb,KAAK8P,QAAQwL,OAAO5K,KAAKsW,WAAalX,EAAQwL,OAC9Ctb,KAAK8P,QAAQwL,OAAO5K,KAAKuW,SAAWnX,EAAQwL,QACT,gBAAnBxL,GAAQwL,SACxB3a,EAAKkG,iBAAiB,QAAS7G,KAAK8P,QAAQwL,OAAQxL,EAAQwL,QACxD,QAAUxL,GAAQwL,SACe,gBAAxBxL,GAAQwL,OAAO5K,MACxB1Q,KAAK8P,QAAQwL,OAAO5K,KAAKsW,WAAalX,EAAQwL,OAAO5K,KACrD1Q,KAAK8P,QAAQwL,OAAO5K,KAAKuW,SAAWnX,EAAQwL,OAAO5K,MACX,gBAAxBZ,GAAQwL,OAAO5K,MAC/B/P,EAAKkG,iBAAiB,aAAc,YAAa7G,KAAK8P,QAAQwL,OAAO5K,KAAMZ,EAAQwL,OAAO5K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQ43B,UACjB1nC,KAAK8P,QAAQ43B,SAASoC,WAAah6B,EAAQ43B,SAC3C1nC,KAAK8P,QAAQ43B,SAASwF,YAAcp9B,EAAQ43B,SAC5C1nC,KAAK8P,QAAQ43B,SAAS/yB,IAAM7E,EAAQ43B,SACpC1nC,KAAK8P,QAAQ43B,SAAS1vB,OAASlI,EAAQ43B,UACF,gBAArB53B,GAAQ43B,UACxB/mC,EAAKkG,iBAAiB,aAAc,cAAe,MAAO,UAAW7G,KAAK8P,QAAQ43B,SAAU53B,EAAQ43B,UAKxG,IAAI+N,GAAc,SAAW79B,GAC3B,GAAIkD,GAAKhL,EAAQ8H,EACjB,IAAIkD,EAAI,CACN,KAAMA,YAAc46B,WAClB,KAAM,IAAIlyC,OAAM,UAAYoU,EAAO,uBAAyBA,EAAO,mBAErE5X,MAAK8P,QAAQ8H,GAAQkD,IAEtBob,KAAKl2B,OACP,QAAS,WAAY,WAAY,SAAU,YAAYqJ,QAAQosC,GAGhEz1C,KAAK23B,cAST70B,EAAQ+R,UAAU8iB,UAAY,SAAU7nB,GACtC9P,KAAK60C,YACL70C,KAAK+0C,YAAa,EAEdjlC,GAAWA,EAAQ8nB,cACrBj3B,EAAK0I,QAAQrJ,KAAKiC,MAAO,SAAUyO,GACjCA,EAAKm2B,OAAQ,EACTn2B,EAAKk2B,WAAWl2B,EAAK0S,YAQ/BtgB,EAAQ+R,UAAUG,QAAU,WAC1BhV,KAAKmnC,OACLnnC,KAAKw3B,SAAS,MACdx3B,KAAKu3B,UAAU,MAEfv3B,KAAK0D,OAAS,KAEd1D,KAAK+1B,KAAO,KACZ/1B,KAAK28B,WAAa,MAMpB75B,EAAQ+R,UAAUsyB,KAAO,WAEnBnnC,KAAKmxB,IAAIlQ,MAAMpW,YACjB7K,KAAKmxB,IAAIlQ,MAAMpW,WAAW1G,YAAYnE,KAAKmxB,IAAIlQ,OAI7CjhB,KAAKmxB,IAAIgS,KAAKt4B,YAChB7K,KAAKmxB,IAAIgS,KAAKt4B,WAAW1G,YAAYnE,KAAKmxB,IAAIgS,MAI5CnjC,KAAKmxB,IAAIqI,SAAS3uB,YACpB7K,KAAKmxB,IAAIqI,SAAS3uB,WAAW1G,YAAYnE,KAAKmxB,IAAIqI,WAQtD12B,EAAQ+R,UAAUuyB,KAAO,WAElBpnC,KAAKmxB,IAAIlQ,MAAMpW,YAClB7K,KAAK+1B,KAAK5E,IAAI5D,OAAO1a,YAAY7S,KAAKmxB,IAAIlQ,OAIvCjhB,KAAKmxB,IAAIgS,KAAKt4B,YACjB7K,KAAK+1B,KAAK5E,IAAIsZ,mBAAmB53B,YAAY7S,KAAKmxB,IAAIgS,MAInDnjC,KAAKmxB,IAAIqI,SAAS3uB,YACrB7K,KAAK+1B,KAAK5E,IAAIzoB,KAAKmK,YAAY7S,KAAKmxB,IAAIqI,WAW5C12B,EAAQ+R,UAAUujB,aAAe,SAAUthB,GACzC,GAAItQ,GAAGksC,EAAIryC,EAAIqQ,CAMf,KAJWtK,QAAP0Q,IAAkBA,MACjB/P,MAAMC,QAAQ8P,KAAMA,GAAOA,IAG3BtQ,EAAI,EAAGksC,EAAK1yC,KAAK80C,UAAUpuC,OAAYgsC,EAAJlsC,EAAQA,IAC9CnG,EAAKL,KAAK80C,UAAUtuC,GACpBkK,EAAO1Q,KAAKiC,MAAM5B,GACdqQ,GAAMA,EAAKq2B,UAKjB,KADA/mC,KAAK80C,aACAtuC,EAAI,EAAGksC,EAAK57B,EAAIpQ,OAAYgsC,EAAJlsC,EAAQA,IACnCnG,EAAKyW,EAAItQ,GACTkK,EAAO1Q,KAAKiC,MAAM5B,GACdqQ,IACF1Q,KAAK80C,UAAUttC,KAAKnH,GACpBqQ,EAAKo2B,WASXhkC,EAAQ+R,UAAUyjB,aAAe,WAC/B,MAAOt4B,MAAK80C,UAAUp/B,YAOxB5S,EAAQ+R,UAAU8gC,gBAAkB,WAClC,GAAI7e,GAAQ92B,KAAK+1B,KAAKe,MAAM6K,WACxBj5B,EAAO1I,KAAK+1B,KAAKp1B,KAAK21B,SAASQ,EAAM7lB,OACrC4X,EAAQ7oB,KAAK+1B,KAAKp1B,KAAK21B,SAASQ,EAAM5lB,KAEtC4F,IACJ,KAAK,GAAI2iB,KAAWz5B,MAAKu1B,OACvB,GAAIv1B,KAAKu1B,OAAOvvB,eAAeyzB,GAM7B,IAAK,GALDpmB,GAAQrT,KAAKu1B,OAAOkE,GACpBmc,EAAkBviC,EAAMs+B,aAInBnrC,EAAI,EAAGA,EAAIovC,EAAgBlvC,OAAQF,IAAK,CAC/C,GAAIkK,GAAOklC,EAAgBpvC,EAEvBkK,GAAKhI,KAAOmgB,GAASnY,EAAKhI,KAAOgI,EAAKuD,MAAQvL,GAChDoO,EAAItP,KAAKkJ,EAAKrQ,IAMtB,MAAOyW,IAQThU,EAAQ+R,UAAUghC,UAAY,SAAUx1C,GAEtC,IAAK,GADDy0C,GAAY90C,KAAK80C,UACZtuC,EAAI,EAAGksC,EAAKoC,EAAUpuC,OAAYgsC,EAAJlsC,EAAQA,IAC7C,GAAIsuC,EAAUtuC,IAAMnG,EAAI,CAEtBy0C,EAAU1rC,OAAO5C,EAAG,EACpB,SASN1D,EAAQ+R,UAAUuO,OAAS,WACzB,GAAI9H,GAAStb,KAAK8P,QAAQwL,OACtBwb,EAAQ92B,KAAK+1B,KAAKe,MAClBxrB,EAAS3K,EAAKsK,OAAOK,OACrBwE,EAAU9P,KAAK8P,QACf6lB,EAAc7lB,EAAQ6lB,YACtByU,GAAU,EACVnpB,EAAQjhB,KAAKmxB,IAAIlQ,MACjBymB,EAAW53B,EAAQ43B,SAASoC,YAAch6B,EAAQ43B,SAASwF,WAG/DltC,MAAK8G,MAAM8B,IAAM5I,KAAK+1B,KAAKC,SAASptB,IAAIsL,OAASlU,KAAK+1B,KAAKC,SAASxoB,OAAO5E,IAC3E5I,KAAK8G,MAAM4B,KAAO1I,KAAK+1B,KAAKC,SAASttB,KAAKuL,MAAQjU,KAAK+1B,KAAKC,SAASxoB,OAAO9E,KAG5EuY,EAAMnY,UAAY,eAAiB4+B,EAAW,gBAAkB,IAGhE0C,EAAUpqC,KAAK81C,gBAAkB1L,CAIjC,IAAI2L,GAAkBjf,EAAM5lB,IAAM4lB,EAAM7lB,MACpC+kC,EAASD,GAAmB/1C,KAAKi2C,qBAAuBj2C,KAAK8G,MAAMmN,OAASjU,KAAK8G,MAAMovC,SACvFF,KAAQh2C,KAAK+0C,YAAa,GAC9B/0C,KAAKi2C,oBAAsBF,EAC3B/1C,KAAK8G,MAAMovC,UAAYl2C,KAAK8G,MAAMmN,KAElC,IAAIi+B,GAAUlyC,KAAK+0C,WACfoB,EAAan2C,KAAKo2C,cAClBC,GACF3lC,KAAM4K,EAAO5K,KACbyyB,KAAM7nB,EAAO6nB,MAEXmT,GACF5lC,KAAM4K,EAAO5K,KACbyyB,KAAM7nB,EAAO5K,KAAKuW,SAAW,GAE3B/S,EAAS,EACT2hB,EAAYva,EAAO6nB,KAAO7nB,EAAO5K,KAAKuW,QA6B1C,OA1BAjnB,MAAKu1B,OAAO2f,GAAY9xB,OAAO0T,EAAOwf,EAAgBpE,GAGtDvxC,EAAK0I,QAAQrJ,KAAKu1B,OAAQ,SAAUliB,GAClC,GAAIkjC,GAAcljC,GAAS8iC,EAAaE,EAAcC,EAClDE,EAAenjC,EAAM+P,OAAO0T,EAAOyf,EAAarE,EACpD9H,GAAUoM,GAAgBpM,EAC1Bl2B,GAAUb,EAAMa,SAElBA,EAASxP,KAAKJ,IAAI4P,EAAQ2hB,GAC1B71B,KAAK+0C,YAAa,EAGlB9zB,EAAM7S,MAAM8F,OAAS5I,EAAO4I,GAG5BlU,KAAK8G,MAAMmN,MAAQgN,EAAMuQ,YACzBxxB,KAAK8G,MAAMoN,OAASA,EAGpBlU,KAAKmxB,IAAIgS,KAAK/0B,MAAMxF,IAAM0C,EAAsB,OAAfqqB,EAAuB31B,KAAK+1B,KAAKC,SAASptB,IAAIsL,OAASlU,KAAK+1B,KAAKC,SAASxoB,OAAO5E,IAAM5I,KAAK+1B,KAAKC,SAASptB,IAAIsL,OAASlU,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,QAC3LlU,KAAKmxB,IAAIgS,KAAK/0B,MAAM1F,KAAO,IAG3B0hC,EAAUpqC,KAAKmqC,cAAgBC,GAUjCtnC,EAAQ+R,UAAUuhC,YAAc,WAC9B,GAAIK,GAA8C,OAA5Bz2C,KAAK8P,QAAQ6lB,YAAuB,EAAI31B,KAAK60C,SAASnuC,OAAS,EACjFgwC,EAAe12C,KAAK60C,SAAS4B,GAC7BN,EAAan2C,KAAKu1B,OAAOmhB,IAAiB12C,KAAKu1B,OAAO0f,EAE1D,OAAOkB,IAAc,MAQvBrzC,EAAQ+R,UAAUsgC,iBAAmB,WACnC,CAAA,GAEIzkC,GAAMwG,EAFNy/B,EAAY32C,KAAKu1B,OAAO0f,EACXj1C,MAAKu1B,OAAO2f,GAG7B,GAAIl1C,KAAKo3B,YAEP,GAAIuf,EAAW,CACbA,EAAUxP,aACHnnC,MAAKu1B,OAAO0f,EAEnB,KAAK/9B,IAAUlX,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAM+D,eAAekR,GAAS,CACrCxG,EAAO1Q,KAAKiC,MAAMiV,GAClBxG,EAAK3F,QAAU2F,EAAK3F,OAAOiN,OAAOtH,EAClC,IAAI+oB,GAAUz5B,KAAK42C,YAAYlmC,EAAK0D,MAChCf,EAAQrT,KAAKu1B,OAAOkE,EACxBpmB,IAASA,EAAMsB,IAAIjE,IAASA,EAAKy2B,aAMvC,KAAKwP,EAAW,CACd,GAAIt2C,GAAK,KACL+T,EAAO,IACXuiC,GAAY,GAAI/zC,GAAMvC,EAAI+T,EAAMpU,MAChCA,KAAKu1B,OAAO0f,GAAa0B,CAEzB,KAAKz/B,IAAUlX,MAAKiC,MACdjC,KAAKiC,MAAM+D,eAAekR,KAC5BxG,EAAO1Q,KAAKiC,MAAMiV,GAClBy/B,EAAUhiC,IAAIjE,GAIlBimC,GAAUvP,SAShBtkC,EAAQ+R,UAAUgiC,YAAc,WAC9B,MAAO72C,MAAKmxB,IAAIqI,UAOlB12B,EAAQ+R,UAAU2iB,SAAW,SAAUv1B,GACrC,GACI6U,GADAjB,EAAK7V,KAEL82C,EAAe92C,KAAKm3B,SAGxB,IAAKl1B,EAEE,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAGtD,KAAM,IAAIoG,WAAU,kDAFpBlH,MAAKm3B,UAAYl1B,MAFjBjC,MAAKm3B,UAAY,IAkBnB,IAXI2f,IAEFn2C,EAAK0I,QAAQrJ,KAAKq0C,cAAe,SAAU/qC,EAAUgB,GACnDwsC,EAAa1hC,IAAI9K,EAAOhB,KAI1BwN,EAAMggC,EAAat/B,SACnBxX,KAAKw0C,UAAU19B,IAGb9W,KAAKm3B,UAAW,CAElB,GAAI92B,GAAKL,KAAKK,EACdM,GAAK0I,QAAQrJ,KAAKq0C,cAAe,SAAU/qC,EAAUgB,GACnDuL,EAAGshB,UAAUliB,GAAG3K,EAAOhB,EAAUjJ,KAInCyW,EAAM9W,KAAKm3B,UAAU3f,SACrBxX,KAAKs0C,OAAOx9B,GAGZ9W,KAAKm1C,qBAQTryC,EAAQ+R,UAAUkiC,SAAW,WAC3B,MAAO/2C,MAAKm3B,WAOdr0B,EAAQ+R,UAAU0iB,UAAY,SAAUhC,GACtC,GACIze,GADAjB,EAAK7V,IAgBT,IAZIA,KAAKo3B,aACPz2B,EAAK0I,QAAQrJ,KAAKy0C,eAAgB,SAAUnrC,EAAUgB,GACpDuL,EAAGuhB,WAAW9hB,YAAYhL,EAAOhB,KAInCwN,EAAM9W,KAAKo3B,WAAW5f,SACtBxX,KAAKo3B,WAAa,KAClBp3B,KAAK40C,gBAAgB99B,IAIlBye,EAEE,CAAA,KAAIA,YAAkB10B,IAAW00B,YAAkBz0B,IAGxD,KAAM,IAAIoG,WAAU,kDAFpBlH,MAAKo3B,WAAa7B,MAFlBv1B,MAAKo3B,WAAa,IAOpB,IAAIp3B,KAAKo3B,WAAY,CAEnB,GAAI/2B,GAAKL,KAAKK,EACdM,GAAK0I,QAAQrJ,KAAKy0C,eAAgB,SAAUnrC,EAAUgB,GACpDuL,EAAGuhB,WAAWniB,GAAG3K,EAAOhB,EAAUjJ,KAIpCyW,EAAM9W,KAAKo3B,WAAW5f,SACtBxX,KAAK00C,aAAa59B,GAIpB9W,KAAKm1C,mBAGLn1C,KAAKg3C,SAELh3C,KAAK+1B,KAAKE,QAAQhH,KAAK,UAAYna,OAAO,KAO5ChS,EAAQ+R,UAAUoiC,UAAY,WAC5B,MAAOj3C,MAAKo3B,YAOdt0B,EAAQ+R,UAAUm+B,WAAa,SAAU3yC,GACvC,GAAIqQ,GAAO1Q,KAAKm3B,UAAUvgB,IAAIvW,GAC1Bo4B,EAAUz4B,KAAKm3B,UAAU1f,YAEzB/G,IAEF1Q,KAAK8P,QAAQokC,SAASxjC,EAAM,SAAUA,GAChCA,GAGF+nB,EAAQzgB,OAAO3X,MAYvByC,EAAQ+R,UAAUqiC,SAAW,SAAU3e,GACrC,MAAOA,GAAS3wB,MAAQ5H,KAAK8P,QAAQlI,OAAS2wB,EAASrnB,IAAM,QAAU,QASzEpO,EAAQ+R,UAAU+hC,YAAc,SAAUre,GACxC,GAAI3wB,GAAO5H,KAAKk3C,SAAS3e,EACzB,OAAY,cAAR3wB,GAA0CxB,QAAlBmyB,EAASllB,MAC5B6hC,EAEAl1C,KAAKo3B,WAAamB,EAASllB,MAAQ4hC,GAS9CnyC,EAAQ+R,UAAU0/B,UAAY,SAAUz9B,GACtC,GAAIjB,GAAK7V,IAET8W,GAAIzN,QAAQ,SAAUhJ,GACpB,GAAIk4B,GAAW1iB,EAAGshB,UAAUvgB,IAAIvW,EAAIwV,EAAGu+B,aACnC1jC,EAAOmF,EAAG5T,MAAM5B,GAChBuH,EAAOiO,EAAGqhC,SAAS3e,GAEnBpxB,EAAcrE,EAAQ+V,MAAMjR,EAahC,IAXI8I,IAEGvJ,GAAiBuJ,YAAgBvJ,GAKpC0O,EAAGc,YAAYjG,EAAM6nB,IAHrB1iB,EAAGshC,YAAYzmC,GACfA,EAAO,QAMNA,EAAM,CAET,IAAIvJ,EAIG,KAEC,IAAID,WAFO,iBAARU,EAEW,+HAEA,sBAAwBA,EAAO,IAPnD8I,GAAO,GAAIvJ,GAAYoxB,EAAU1iB,EAAG8mB,WAAY9mB,EAAG/F,SACnDY,EAAKrQ,GAAKA,EACVwV,EAAGC,SAASpF,MAUlB1Q,KAAKg3C,SACLh3C,KAAK+0C,YAAa,EAClB/0C,KAAK+1B,KAAKE,QAAQhH,KAAK,UAAYna,OAAO,KAQ5ChS,EAAQ+R,UAAUy/B,OAASxxC,EAAQ+R,UAAU0/B,UAO7CzxC,EAAQ+R,UAAU2/B,UAAY,SAAU19B,GACtC,GAAI6B,GAAQ,EACR9C,EAAK7V,IACT8W,GAAIzN,QAAQ,SAAUhJ,GACpB,GAAIqQ,GAAOmF,EAAG5T,MAAM5B,EAChBqQ,KACFiI,IACA9C,EAAGshC,YAAYzmC,MAIfiI,IAEF3Y,KAAKg3C,SACLh3C,KAAK+0C,YAAa,EAClB/0C,KAAK+1B,KAAKE,QAAQhH,KAAK,UAAYna,OAAO,MAQ9ChS,EAAQ+R,UAAUmiC,OAAS,WAGzBr2C,EAAK0I,QAAQrJ,KAAKu1B,OAAQ,SAAUliB,GAClCA,EAAM+D,WASVtU,EAAQ+R,UAAU8/B,gBAAkB,SAAU79B,GAC5C9W,KAAK00C,aAAa59B,IAQpBhU,EAAQ+R,UAAU6/B,aAAe,SAAU59B,GACzC,GAAIjB,GAAK7V,IAET8W,GAAIzN,QAAQ,SAAUhJ,GACpB,GAAIixC,GAAYz7B,EAAGuhB,WAAWxgB,IAAIvW,GAC9BgT,EAAQwC,EAAG0f,OAAOl1B,EAEtB,IAAKgT,EA4BHA,EAAMsG,QAAQ23B,OA5BJ,CAEV,GAAIjxC,GAAM40C,GAAa50C,GAAM60C,EAC3B,KAAM,IAAI1xC,OAAM,qBAAuBnD,EAAK,qBAG9C,IAAI+2C,GAAehwC,OAAOsI,OAAOmG,EAAG/F,QACpCnP,GAAKiG,OAAOwwC,GACVljC,OAAQ,OAGVb,EAAQ,GAAIzQ,GAAMvC,EAAIixC,EAAWz7B,GACjCA,EAAG0f,OAAOl1B,GAAMgT,CAGhB,KAAK,GAAI6D,KAAUrB,GAAG5T,MACpB,GAAI4T,EAAG5T,MAAM+D,eAAekR,GAAS,CACnC,GAAIxG,GAAOmF,EAAG5T,MAAMiV,EAChBxG,GAAK0D,KAAKf,OAAShT,GACrBgT,EAAMsB,IAAIjE,GAKhB2C,EAAM+D,QACN/D,EAAM+zB,UAOVpnC,KAAK+1B,KAAKE,QAAQhH,KAAK,UAAYna,OAAO,KAQ5ChS,EAAQ+R,UAAU+/B,gBAAkB,SAAU99B,GAC5C,GAAIye,GAASv1B,KAAKu1B,MAClBze,GAAIzN,QAAQ,SAAUhJ,GACpB,GAAIgT,GAAQkiB,EAAOl1B,EAEfgT,KACFA,EAAM8zB,aACC5R,GAAOl1B,MAIlBL,KAAK23B,YAEL33B,KAAK+1B,KAAKE,QAAQhH,KAAK,UAAYna,OAAO,KAQ5ChS,EAAQ+R,UAAUihC,aAAe,WAC/B,GAAI91C,KAAKo3B,WAAY,CAEnB,GAAIyd,GAAW70C,KAAKo3B,WAAW5f,QAC7BJ,MAAOpX,KAAK8P,QAAQ+jC,aAGlBrS,GAAW7gC,EAAK8G,WAAWotC,EAAU70C,KAAK60C,SAC9C,IAAIrT,EAAS,CAEX,GAAIjM,GAASv1B,KAAKu1B,MAClBsf,GAASxrC,QAAQ,SAAUowB,GACzBlE,EAAOkE,GAAS0N,SAIlB0N,EAASxrC,QAAQ,SAAUowB,GACzBlE,EAAOkE,GAAS2N,SAGlBpnC,KAAK60C,SAAWA,EAGlB,MAAOrT,GAEP,OAAO,GASX1+B,EAAQ+R,UAAUiB,SAAW,SAAUpF,GACrC1Q,KAAKiC,MAAMyO,EAAKrQ,IAAMqQ,CAGtB,IAAI+oB,GAAUz5B,KAAK42C,YAAYlmC,EAAK0D,MAChCf,EAAQrT,KAAKu1B,OAAOkE,EACpBpmB,IAAOA,EAAMsB,IAAIjE,IASvB5N,EAAQ+R,UAAU8B,YAAc,SAAUjG,EAAM6nB,GAC9C,GAAI8e,GAAa3mC,EAAK0D,KAAKf,MACvBikC,EAAgB5mC,EAAK0D,KAAKsvB,QAM9B,IAHAhzB,EAAKiJ,QAAQ4e,GAGT8e,GAAc3mC,EAAK0D,KAAKf,OAASikC,GAAiB5mC,EAAK0D,KAAKsvB,SAAU,CACxE,GAAI6T,GAAWv3C,KAAKu1B,OAAO8hB,EACvBE,IAAUA,EAASv/B,OAAOtH,EAE9B,IAAI+oB,GAAUz5B,KAAK42C,YAAYlmC,EAAK0D,MAChCf,EAAQrT,KAAKu1B,OAAOkE,EACpBpmB,IAAOA,EAAMsB,IAAIjE;;GAUzB5N,EAAQ+R,UAAUsiC,YAAc,SAAUzmC,GAExCA,EAAKy2B,aAGEnnC,MAAKiC,MAAMyO,EAAKrQ,GAGvB,IAAI8I,GAAQnJ,KAAK80C,UAAUvtC,QAAQmJ,EAAKrQ,GAC3B,KAAT8I,GAAanJ,KAAK80C,UAAU1rC,OAAOD,EAAO,GAG9CuH,EAAK3F,QAAU2F,EAAK3F,OAAOiN,OAAOtH,IASpC5N,EAAQ+R,UAAU2iC,qBAAuB,SAAUhuC,GAGjD,IAAK,GAFD0pC,MAEK1sC,EAAI,EAAGA,EAAIgD,EAAM9C,OAAQF,IAC5BgD,EAAMhD,YAAclE,IACtB4wC,EAAS1rC,KAAKgC,EAAMhD,GAGxB,OAAO0sC,IAaTpwC,EAAQ+R,UAAU8rB,SAAW,SAAUr2B,GAErCtK,KAAKg1C,YAAYtkC,KAAO1Q,KAAK64B,eAAevuB,GAC5CtK,KAAKg1C,YAAYhL,aAAe1/B,EAAMI,OAAOs/B,eAAgB,EAC7DhqC,KAAKg1C,YAAY9K,cAAgB5/B,EAAMI,OAAOw/B,gBAAiB,EAC/DlqC,KAAKg1C,YAAYyC,UAAY,MAQ/B30C,EAAQ+R,UAAU0rB,aAAe,SAAUj2B,GACzC,GAAKtK,KAAK8P,QAAQ43B,SAASoC,YAAe9pC,KAAK8P,QAAQ43B,SAASwF,YAAhE,CAIA,GAEIpmC,GAFA4J,EAAO1Q,KAAKg1C,YAAYtkC,MAAQ,KAChCmF,EAAK7V,IAGT,IAAI0Q,GAAQA,EAAKi2B,SAAU,CACzB,GAAIqD,GAAehqC,KAAKg1C,YAAYhL,aAChCE,EAAgBlqC,KAAKg1C,YAAY9K,aAEjCF,IACFljC,GACE4J,KAAMs5B,EACN0N,SAAUptC,EAAMijB,OAAOpa,EACvB42B,UAAU,EACV31B,KAAMzT,EAAKiG,UAAW8J,EAAK0D,OAG7BpU,KAAKg1C,YAAYyC,WAAa3wC,IACrBojC,GACTpjC,GACE4J,KAAMw5B,EACNwN,SAAUptC,EAAMijB,OAAOpa,EACvB82B,WAAW,EACX71B,KAAMzT,EAAKiG,UAAW8J,EAAK0D,OAG7BpU,KAAKg1C,YAAYyC,WAAa3wC,IAE9B9G,KAAKg1C,YAAYyC,UAAYz3C,KAAKs4B,eAAe9pB,IAAI,SAAUnO,GAC7D,GAAIqQ,GAAOmF,EAAG5T,MAAM5B,GAChByG,GACF4J,KAAMA,EACNgnC,SAAUptC,EAAMijB,OAAOpa,EACvBiB,KAAMzT,EAAKiG,UAAW8J,EAAK0D,MAG7B,OAAOtN,KAIXwD,EAAMw9B,sBACG9nC,MAAK8P,QAAQ43B,SAAS/yB,KAAOrK,EAAMqtC,SAASC,SAErD53C,KAAK63C,oBAAoBvtC,KAS7BxH,EAAQ+R,UAAUgjC,oBAAsB,SAAUvtC,GAChD,GAAI6uB,GAAOn5B,KAAK8P,QAAQqpB,MAAQ,KAC5B2e,EAAOn3C,EAAK4H,gBAAgBvI,KAAKmxB,IAAIlQ,OACrC9N,EAAI7I,EAAMijB,OAAOpa,EAAI2kC,EAAO,GAC5B1e,EAAOp5B,KAAK+1B,KAAKp1B,KAAK+1B,OAAOvjB,GAC7B1O,EAAQzE,KAAK+1B,KAAKp1B,KAAKy1B,WACvBzM,EAAO3pB,KAAK+1B,KAAKp1B,KAAK20B,UACtBrkB,EAAQkoB,EAAOA,EAAKC,EAAM30B,EAAOklB,GAAQ1Y,EACzCC,EAAMD,EAENsnB,GACF3wB,KAAM,QACNqJ,MAAOA,EACPC,IAAKA,EACL4C,QAAS,YAGPzT,EAAKM,EAAK6E,YACd+yB,GAASv4B,KAAKm3B,UAAU5iB,UAAYlU,CAEpC,IAAIgT,GAAQrT,KAAK84B,gBAAgBxuB,EAC7B+I,KACFklB,EAASllB,MAAQA,EAAMomB,QAGzB,IAAIse,GAAU,GAAIz1C,GAAUi2B,EAAUv4B,KAAK28B,WAAY38B,KAAK8P,QAC5DioC,GAAQ13C,GAAKA,EACb03C,EAAQ3jC,KAAOmkB,EACfv4B,KAAK8V,SAASiiC,EAEd,IAAIjxC,IACF4J,KAAMqnC,EACN9N,WAAW,EACXyN,SAAUptC,EAAMijB,OAAOpa,EACvBiB,KAAMzT,EAAKiG,UAAW2xB,GAExBv4B,MAAKg1C,YAAYyC,WAAa3wC,GAE9BwD,EAAMw9B,mBAQRhlC,EAAQ+R,UAAU2rB,QAAU,SAAUl2B,GACpC,GAAItK,KAAKg1C,YAAYyC,UAAW,CAC9BntC,EAAMw9B,iBAEN,IAAIjyB,GAAK7V,KACLm5B,EAAOn5B,KAAK8P,QAAQqpB,MAAQ,KAC5BvlB,EAAU5T,KAAK+1B,KAAK5E,IAAIzxB,KAAK+yC,WAAazyC,KAAK+1B,KAAKC,SAASttB,KAAKuL,MAClExP,EAAQzE,KAAK+1B,KAAKp1B,KAAKy1B,WACvBzM,EAAO3pB,KAAK+1B,KAAKp1B,KAAK20B,SAG1Bt1B,MAAKg1C,YAAYyC,UAAUpuC,QAAQ,SAAUvC,GAC3C,GACIy1B,GAAU1mB,EAAGkgB,KAAKp1B,KAAK+1B,OAAOpsB,EAAMijB,OAAOpa,EAAIS,GAC/CokC,EAAUniC,EAAGkgB,KAAKp1B,KAAK+1B,OAAO5vB,EAAM4wC,SAAW9jC,GAC/CsX,EAASqR,EAAUyb,EAEnBzf,EAAW53B,EAAKiG,UAAWE,EAAM4J,KAAK0D,KAE1C,IAAIyB,EAAG/F,QAAQ43B,SAASoC,WACtB,GAAIhjC,EAAMijC,UAER,GAAsB3jC,QAAlBmyB,EAAStnB,MAAoB,CAC/B,GAAIgnC,GAAet3C,EAAKgH,QAAQb,EAAMsN,KAAKnD,MAAO,QAC9CA,EAAQ,GAAInM,MAAKmzC,EAAanwC,UAAYojB,EAC9CqN,GAAStnB,MAAQkoB,EAAOA,EAAKloB,EAAOxM,EAAOklB,GAAQ1Y,OAEhD,IAAInK,EAAMmjC,WAEf,GAAoB7jC,QAAhBmyB,EAASrnB,IAAkB,CAC7B,GAAIgnC,GAAav3C,EAAKgH,QAAQb,EAAMsN,KAAKlD,IAAK,QAC1CA,EAAM,GAAIpM,MAAKozC,EAAWpwC,UAAYojB,EAC1CqN,GAASrnB,IAAMioB,EAAOA,EAAKjoB,EAAKzM,EAAOklB,GAAQzY,OAIjD,IAAsB9K,QAAlBmyB,EAAStnB,MAAoB,CAC/B,GAAIgnC,GAAet3C,EAAKgH,QAAQb,EAAMsN,KAAKnD,MAAO,QAAQnJ,UACtDmJ,EAAQ,GAAInM,MAAKmzC,EAAe/sB,EAEpC,IAAoB9kB,QAAhBmyB,EAASrnB,IAAkB,CAC7B,GAAIgnC,GAAav3C,EAAKgH,QAAQb,EAAMsN,KAAKlD,IAAK,QAC1CC,EAAW+mC,EAAWpwC,UAAYmwC,EAAanwC,SAEnDywB,GAAStnB,MAAQkoB,EAAOA,EAAKloB,EAAOxM,EAAOklB,GAAQ1Y,EACnDsnB,EAASrnB,IAAM,GAAIpM,MAAKyzB,EAAStnB,MAAMnJ,UAAYqJ,OAEnDonB,GAAStnB,MAAQkoB,EAAOA,EAAKloB,EAAOxM,EAAOklB,GAAQ1Y,EAM3D,GAAI4E,EAAG/F,QAAQ43B,SAASwF,cAAiBpmC,EAAMijC,WAAajjC,EAAMmjC,WAC1C7jC,QAAlBmyB,EAASllB,MAAoB,CAE/B,GAAIA,GAAQwC,EAAGijB,gBAAgBxuB,EAC3B+I,KACFklB,EAASllB,MAAQA,EAAMomB,SAM7B5jB,EAAG/F,QAAQqkC,SAAS5b,EAAU,SAAUA,GAClCA,GACFzxB,EAAM4J,KAAKiJ,QAAQ4e,OAKzBv4B,KAAK+0C,YAAa,EAClB/0C,KAAK+1B,KAAKE,QAAQhH,KAAK,YAU3BnsB,EAAQ+R,UAAUoyB,aAAe,SAAUv2B,EAAM+oB,GAC/C,GAAIpmB,GAAQrT,KAAKu1B,OAAOkE,EACxB,IAAIpmB,GAASA,EAAMomB,SAAW/oB,EAAK0D,KAAKf,MAAO,CAC7C,GAAIkkC,GAAW7mC,EAAK3F,MACpBwsC,GAASv/B,OAAOtH,GAChB6mC,EAASngC,QACT/D,EAAMsB,IAAIjE,GACV2C,EAAM+D,QAEN1G,EAAK0D,KAAKf,MAAQA,EAAMomB,UAS5B32B,EAAQ+R,UAAU4rB,WAAa,SAAUn2B,GACvC,GAAItK,KAAKg1C,YAAYyC,UAAW,CAC9BntC,EAAMw9B,iBAGN,IAAIqQ,MACAtiC,EAAK7V,KACLy4B,EAAUz4B,KAAKm3B,UAAU1f,aAEzBggC,EAAYz3C,KAAKg1C,YAAYyC,SACjCz3C,MAAKg1C,YAAYyC,UAAY,KAC7BA,EAAUpuC,QAAQ,SAAUvC,GAC1B,GAAIzG,GAAKyG,EAAM4J,KAAKrQ,GAChBuY,EAAiD,MAAxC/C,EAAGshB,UAAUvgB,IAAIvW,EAAIwV,EAAGu+B,YAErC,IAAKx7B,EAYE,CAEL,GAAI2f,GAAW53B,EAAKiG,UAAWE,EAAM4J,KAAK0D,KAC1CyB,GAAG/F,QAAQmkC,OAAO1b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQlkB,UAAYlU,EAC7B83C,EAAQ3wC,KAAK+wB,KAGbzxB,EAAM4J,KAAKiJ,QAAQ7S,EAAMsN,MAEzByB,EAAGk/B,YAAa,EAChBl/B,EAAGkgB,KAAKE,QAAQhH,KAAK,iBAvBzBpZ,GAAG/F,QAAQikC,MAAMjtC,EAAM4J,KAAK0D,KAAM,SAAUmkB,GAC1C1iB,EAAGshC,YAAYrwC,EAAM4J,MACjB6nB,GACF1iB,EAAGshB,UAAU1f,aAAa9C,IAAI4jB,GAIhC1iB,EAAGk/B,YAAa,EAChBl/B,EAAGkgB,KAAKE,QAAQhH,KAAK,cAsBvBkpB,EAAQzxC,QACV+xB,EAAQliB,OAAO4hC,KAUrBr1C,EAAQ+R,UAAUygC,cAAgB,SAAUhrC,GAC1C,GAAKtK,KAAK8P,QAAQgkC,WAAlB,CAEA,GAAI8D,GAAUttC,EAAMqtC,UAAYrtC,EAAMqtC,SAASC,QAC3CQ,EAAW9tC,EAAMqtC,UAAYrtC,EAAMqtC,SAASS,QAChD,IAAIR,GAAWQ,EAEb,WADAp4C,MAAKu1C,mBAAmBjrC,EAI1B,IAAI+tC,GAAer4C,KAAKs4B,eAEpB5nB,EAAO1Q,KAAK64B,eAAevuB,GAC3BwqC,EAAYpkC,GAAQA,EAAKrQ,MAC7BL,MAAKo4B,aAAa0c,EAElB,IAAIwD,GAAet4C,KAAKs4B,gBAIpBggB,EAAa5xC,OAAS,GAAK2xC,EAAa3xC,OAAS,IACnD1G,KAAK+1B,KAAKE,QAAQhH,KAAK,UACrBhtB,MAAOq2C,MAUbx1C,EAAQ+R,UAAU2gC,WAAa,SAAUlrC,GACvC,GAAKtK,KAAK8P,QAAQgkC,YACb9zC,KAAK8P,QAAQ43B,SAAS/yB,IAA3B,CAEA,GAAIkB,GAAK7V,KACLm5B,EAAOn5B,KAAK8P,QAAQqpB,MAAQ,KAC5BzoB,EAAO1Q,KAAK64B,eAAevuB,EAE/B,IAAIoG,EAAM,CAIR,GAAI6nB,GAAW1iB,EAAGshB,UAAUvgB,IAAIlG,EAAKrQ,GACrCL,MAAK8P,QAAQkkC,SAASzb,EAAU,SAAUA,GACpCA,GACF1iB,EAAGshB,UAAU1f,aAAalB,OAAOgiB,SAGhC,CAEL,GAAIuf,GAAOn3C,EAAK4H,gBAAgBvI,KAAKmxB,IAAIlQ,OACrC9N,EAAI7I,EAAMijB,OAAOpa,EAAI2kC,EACrB7mC,EAAQjR,KAAK+1B,KAAKp1B,KAAK+1B,OAAOvjB,GAC9B1O,EAAQzE,KAAK+1B,KAAKp1B,KAAKy1B,WACvBzM,EAAO3pB,KAAK+1B,KAAKp1B,KAAK20B,UAEtByiB,GACF9mC,MAAOkoB,EAAOA,EAAKloB,EAAOxM,EAAOklB,GAAQ1Y,EACzC6C,QAAS,WAIX,IAA0B,UAAtB9T,KAAK8P,QAAQlI,KAAkB,CACjC,GAAIsJ,GAAMlR,KAAK+1B,KAAKp1B,KAAK+1B,OAAOvjB,EAAInT,KAAK8G,MAAMmN,MAAQ,EACvD8jC,GAAQ7mC,IAAMioB,EAAOA,EAAKjoB,EAAKzM,EAAOklB,GAAQzY,EAGhD6mC,EAAQ/3C,KAAKm3B,UAAU5iB,UAAY5T,EAAK6E,YAExC,IAAI6N,GAAQrT,KAAK84B,gBAAgBxuB,EAC7B+I,KACF0kC,EAAQ1kC,MAAQA,EAAMomB,SAIxBz5B,KAAK8P,QAAQikC,MAAMgE,EAAS,SAAUrnC,GAChCA,GACFmF,EAAGshB,UAAU1f,aAAa9C,IAAIjE,QAYtC5N,EAAQ+R,UAAU0gC,mBAAqB,SAAUjrC,GAC/C,GAAKtK,KAAK8P,QAAQgkC,WAAlB,CAEA,GAAIgB,GACApkC,EAAO1Q,KAAK64B,eAAevuB,EAE/B,IAAIoG,EAAM,CAERokC,EAAY90C,KAAKs4B,cAEjB,IAAI8f,GAAW9tC,EAAMqtC,UAAYrtC,EAAMqtC,SAASS,WAAY,CAC5D,IAAIA,EAAU,CAIZtD,EAAUttC,KAAKkJ,EAAKrQ,GACpB,IAAIy2B,GAAQh0B,EAAQy1C,cAAcv4C,KAAKm3B,UAAUvgB,IAAIk+B,EAAW90C,KAAKo0C,aAGrEU,KACA,KAAK,GAAIz0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAM+D,eAAe3F,GAAK,CACjC,GAAIm4C,GAAQx4C,KAAKiC,MAAM5B,GACnB4Q,EAAQunC,EAAMpkC,KAAKnD,MACnBC,EAAyB9K,SAAnBoyC,EAAMpkC,KAAKlD,IAAoBsnC,EAAMpkC,KAAKlD,IAAMD,CAEtDA,IAAS6lB,EAAMzyB,KAAO6M,GAAO4lB,EAAMxyB,OAASk0C,YAAiBr2C,KAC/D2yC,EAAUttC,KAAKgxC,EAAMn4C,SAItB,CAEL,GAAI8I,GAAQ2rC,EAAUvtC,QAAQmJ,EAAKrQ,GACtB,KAAT8I,EAEF2rC,EAAUttC,KAAKkJ,EAAKrQ,IAGpBy0C,EAAU1rC,OAAOD,EAAO,GAI5BnJ,KAAKo4B,aAAa0c,GAElB90C,KAAK+1B,KAAKE,QAAQhH,KAAK,UACrBhtB,MAAOjC,KAAKs4B,oBAWlBx1B,EAAQy1C,cAAgB,SAAUphB,GAChC,GAAI7yB,GAAM,KACND,EAAM,IAkBV,OAhBA8yB,GAAU9tB,QAAQ,SAAU+K,IACf,MAAP/P,GAAe+P,EAAKnD,MAAQ5M,KAC9BA,EAAM+P,EAAKnD,OAGG7K,QAAZgO,EAAKlD,KACI,MAAP5M,GAAe8P,EAAKlD,IAAM5M,KAC5BA,EAAM8P,EAAKlD,MAGF,MAAP5M,GAAe8P,EAAKnD,MAAQ3M,KAC9BA,EAAM8P,EAAKnD,UAMf5M,IAAKA,EACLC,IAAKA,IAUTxB,EAAQ+R,UAAUgkB,eAAiB,SAAUvuB,GAE3C,IADA,GAAII,GAASJ,EAAMI,OACZA,GAAQ,CACb,GAAIA,EAAO1E,eAAe,iBACxB,MAAO0E,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAST/H,EAAQ+R,UAAUikB,gBAAkB,SAAUxuB,GAE5C,IAAK,GADD2uB,GAAQ3uB,EAAMijB,OAASjjB,EAAMijB,OAAOna,EAAI9I,EAAM2uB,MACzCzyB,EAAI,EAAGA,EAAIxG,KAAK60C,SAASnuC,OAAQF,IAAK,CAC7C,GAAIizB,GAAUz5B,KAAK60C,SAASruC,GACxB6M,EAAQrT,KAAKu1B,OAAOkE,GACpBF,EAAalmB,EAAM8d,IAAIoI,WACvB3wB,EAAMjI,EAAKgI,eAAe4wB,EAC9B,IAAIN,EAAQrwB,GAAOqwB,EAAQrwB,EAAM2wB,EAAW7H,aAC1C,MAAOre,EAGT,IAAiC,QAA7BrT,KAAK8P,QAAQ6lB,aACf,GAAInvB,IAAMxG,KAAK60C,SAASnuC,OAAS,GAAKuyB,EAAQrwB,EAC5C,MAAOyK,OAGT,IAAU,IAAN7M,GAAWyyB,EAAQrwB,EAAM2wB,EAAWrO,OACtC,MAAO7X,GAKb,MAAO,OASTvQ,EAAQ21C,kBAAoB,SAAUnuC,GAEpC,IADA,GAAII,GAASJ,EAAMI,OACZA,GAAQ,CACb,GAAIA,EAAO1E,eAAe,oBACxB,MAAO0E,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGThL,EAAOD,QAAUkD,GAIb,SAASjD,EAAQD,EAASM,GAW9B,QAAS6C,GAAOgzB,EAAMjmB,EAAS4oC,EAAMnN,GACnCvrC,KAAK+1B,KAAOA,EACZ/1B,KAAKy1B,gBACH1lB,SAAS,EACT27B,OAAO,EACPiN,SAAU,GACVC,YAAa,EACblwC,MACEuhB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGdplB,KAAK04C,KAAOA,EACZ14C,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBACpCz1B,KAAKurC,iBAAmBA,EAExBvrC,KAAK2sC,eACL3sC,KAAKmxB,OACLnxB,KAAKu1B,UACLv1B,KAAK6sC,eAAiB,EACtB7sC,KAAK81B,UAEL91B,KAAK4U,WAAW9E,GAjClB,GAAInP,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAO8R,UAAY,GAAItS,GAEvBQ,EAAO8R,UAAUuD,MAAQ,WACvBpY,KAAKu1B,UACLv1B,KAAK6sC,eAAiB,GAGxB9pC,EAAO8R,UAAUm4B,SAAW,SAAUr5B,EAAOs5B,GAEtCjtC,KAAKu1B,OAAOvvB,eAAe2N,KAC9B3T,KAAKu1B,OAAO5hB,GAASs5B,GAEvBjtC,KAAK6sC,gBAAkB,GAGzB9pC,EAAO8R,UAAUq4B,YAAc,SAAUv5B,EAAOs5B,GAC9CjtC,KAAKu1B,OAAO5hB,GAASs5B,GAGvBlqC,EAAO8R,UAAUs4B,YAAc,SAAUx5B,GACnC3T,KAAKu1B,OAAOvvB,eAAe2N,WACtB3T,MAAKu1B,OAAO5hB,GACnB3T,KAAK6sC,gBAAkB,IAI3B9pC,EAAO8R,UAAUihB,QAAU,WACzB91B,KAAKmxB,IAAIlQ,MAAQtO,SAASM,cAAc,OACxCjT,KAAKmxB,IAAIlQ,MAAMnY,UAAY,aAC3B9I,KAAKmxB,IAAIlQ,MAAM7S,MAAMgX,SAAW,WAChCplB,KAAKmxB,IAAIlQ,MAAM7S,MAAMxF,IAAM,OAC3B5I,KAAKmxB,IAAIlQ,MAAM7S,MAAMg/B,QAAU,QAE/BptC,KAAKmxB,IAAI0nB,SAAWlmC,SAASM,cAAc,OAC3CjT,KAAKmxB,IAAI0nB,SAAS/vC,UAAY,kBAC9B9I,KAAKmxB,IAAI0nB,SAASzqC,MAAMgX,SAAW,WACnCplB,KAAKmxB,IAAI0nB,SAASzqC,MAAMxF,IAAM,MAE9B5I,KAAKsrC,IAAM34B,SAASC,gBAAgB,6BAA8B,OAClE5S,KAAKsrC,IAAIl9B,MAAMgX,SAAW,WAC1BplB,KAAKsrC,IAAIl9B,MAAMxF,IAAM,MACrB5I,KAAKsrC,IAAIl9B,MAAM6F,MAAQjU,KAAK8P,QAAQ6oC,SAAW,EAAI,KACnD34C,KAAKsrC,IAAIl9B,MAAM8F,OAAS,OAExBlU,KAAKmxB,IAAIlQ,MAAMpO,YAAY7S,KAAKsrC,KAChCtrC,KAAKmxB,IAAIlQ,MAAMpO,YAAY7S,KAAKmxB,IAAI0nB,WAMtC91C,EAAO8R,UAAUsyB,KAAO,WAElBnnC,KAAKmxB,IAAIlQ,MAAMpW,YACjB7K,KAAKmxB,IAAIlQ,MAAMpW,WAAW1G,YAAYnE,KAAKmxB,IAAIlQ,QAQnDle,EAAO8R,UAAUuyB,KAAO,WAEjBpnC,KAAKmxB,IAAIlQ,MAAMpW,YAClB7K,KAAK+1B,KAAK5E,IAAI5D,OAAO1a,YAAY7S,KAAKmxB,IAAIlQ,QAI9Cle,EAAO8R,UAAUD,WAAa,SAAU9E,GACtC,GAAIP,IAAU,UAAW,cAAe,QAAS,OAAQ,QACzD5O,GAAKsG,oBAAoBsI,EAAQvP,KAAK8P,QAASA,IAGjD/M,EAAO8R,UAAUuO,OAAS,WACxB,GAAIuqB,GAAe,CACnB,KAAK,GAAIlU,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KACO,GAAhCz5B,KAAKu1B,OAAOkE,GAASxP,SAAkE7jB,SAA9CpG,KAAKurC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cz5B,KAAKurC,iBAAiB1R,WAAWJ,IACvIkU,IAKN,IAAuC,GAAnC3tC,KAAK8P,QAAQ9P,KAAK04C,MAAMzuB,SAA2C,GAAvBjqB,KAAK6sC,gBAA+C,GAAxB7sC,KAAK8P,QAAQC,SAAoC,GAAhB49B,EAC3G3tC,KAAKmnC,WACA,CAoBL,GAnBAnnC,KAAKonC,OACmC,YAApCpnC,KAAK8P,QAAQ9P,KAAK04C,MAAMtzB,UAA8D,eAApCplB,KAAK8P,QAAQ9P,KAAK04C,MAAMtzB,UAC5EplB,KAAKmxB,IAAIlQ,MAAM7S,MAAM1F,KAAO,MAC5B1I,KAAKmxB,IAAIlQ,MAAM7S,MAAM0b,UAAY,OACjC9pB,KAAKmxB,IAAI0nB,SAASzqC,MAAM0b,UAAY,OACpC9pB,KAAKmxB,IAAI0nB,SAASzqC,MAAM1F,KAAO1I,KAAK8P,QAAQ6oC,SAAW,GAAK,KAC5D34C,KAAKmxB,IAAI0nB,SAASzqC,MAAMya,MAAQ,GAChC7oB,KAAKsrC,IAAIl9B,MAAM1F,KAAO,MACtB1I,KAAKsrC,IAAIl9B,MAAMya,MAAQ,KAEvB7oB,KAAKmxB,IAAIlQ,MAAM7S,MAAMya,MAAQ,MAC7B7oB,KAAKmxB,IAAIlQ,MAAM7S,MAAM0b,UAAY,QACjC9pB,KAAKmxB,IAAI0nB,SAASzqC,MAAM0b,UAAY,QACpC9pB,KAAKmxB,IAAI0nB,SAASzqC,MAAMya,MAAQ7oB,KAAK8P,QAAQ6oC,SAAW,GAAK,KAC7D34C,KAAKmxB,IAAI0nB,SAASzqC,MAAM1F,KAAO,GAC/B1I,KAAKsrC,IAAIl9B,MAAMya,MAAQ,MACvB7oB,KAAKsrC,IAAIl9B,MAAM1F,KAAO,IAGgB,YAApC1I,KAAK8P,QAAQ9P,KAAK04C,MAAMtzB,UAA8D,aAApCplB,KAAK8P,QAAQ9P,KAAK04C,MAAMtzB,SAC5EplB,KAAKmxB,IAAIlQ,MAAM7S,MAAMxF,IAAM,EAAI9E,OAAO9D,KAAK+1B,KAAK5E,IAAI5D,OAAOnf,MAAMxF,IAAI+C,QAAQ,KAAM,KAAO,KAC1F3L,KAAKmxB,IAAIlQ,MAAM7S,MAAM4W,OAAS,OACzB,CACL,GAAI8zB,GAAmB94C,KAAK+1B,KAAKC,SAASzI,OAAOrZ,OAASlU,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,MAC7FlU,MAAKmxB,IAAIlQ,MAAM7S,MAAM4W,OAAS,EAAI8zB,EAAmBh1C,OAAO9D,KAAK+1B,KAAK5E,IAAI5D,OAAOnf,MAAMxF,IAAI+C,QAAQ,KAAM,KAAO,KAChH3L,KAAKmxB,IAAIlQ,MAAM7S,MAAMxF,IAAM,GAGH,GAAtB5I,KAAK8P,QAAQ47B,OACf1rC,KAAKmxB,IAAIlQ,MAAM7S,MAAM6F,MAAQjU,KAAKmxB,IAAI0nB,SAASrnB,YAAc,GAAK,KAClExxB,KAAKmxB,IAAI0nB,SAASzqC,MAAMya,MAAQ,GAChC7oB,KAAKmxB,IAAI0nB,SAASzqC,MAAM1F,KAAO,GAC/B1I,KAAKsrC,IAAIl9B,MAAM6F,MAAQ,QAEvBjU,KAAKmxB,IAAIlQ,MAAM7S,MAAM6F,MAAQjU,KAAK8P,QAAQ6oC,SAAW,GAAK34C,KAAKmxB,IAAI0nB,SAASrnB,YAAc,GAAK,KAC/FxxB,KAAK+4C,kBAGP,IAAIjlC,GAAU,EACd,KAAK,GAAI2lB,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KACO,GAAhCz5B,KAAKu1B,OAAOkE,GAASxP,SAAkE7jB,SAA9CpG,KAAKurC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cz5B,KAAKurC,iBAAiB1R,WAAWJ,KACvI3lB,GAAW9T,KAAKu1B,OAAOkE,GAAS3lB,QAAU,UAIhD9T,MAAKmxB,IAAI0nB,SAASpzB,UAAY3R,EAC9B9T,KAAKmxB,IAAI0nB,SAASzqC,MAAMujB,WAAa,IAAO3xB,KAAK8P,QAAQ6oC,SAAW34C,KAAK8P,QAAQ8oC,YAAc,OAInG71C,EAAO8R,UAAUkkC,gBAAkB,WACjC,GAAI/4C,KAAKmxB,IAAIlQ,MAAMpW,WAAY,CAC7BjK,EAAQsR,gBAAgBlS,KAAK2sC,YAC7B,IAAInnB,GAAUjb,OAAOu+B,iBAAiB9oC,KAAKmxB,IAAIlQ,OAAO+3B,WAClDzL,EAAazpC,OAAO0hB,EAAQ7Z,QAAQ,KAAM,KAC1CwH,EAAIo6B,EACJxB,EAAY/rC,KAAK8P,QAAQ6oC,SACzBrL,EAAa,IAAOttC,KAAK8P,QAAQ6oC,SACjCvlC,EAAIm6B,EAAa,GAAMD,EAAa,CAExCttC,MAAKsrC,IAAIl9B,MAAM6F,MAAQ83B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAI9T,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KACO,GAAhCz5B,KAAKu1B,OAAOkE,GAASxP,SAAkE7jB,SAA9CpG,KAAKurC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cz5B,KAAKurC,iBAAiB1R,WAAWJ,KACvIz5B,KAAKu1B,OAAOkE,GAAS+T,SAASr6B,EAAGC,EAAGpT,KAAK2sC,YAAa3sC,KAAKsrC,IAAKS,EAAWuB,GAC3El6B,GAAKk6B,EAAattC,KAAK8P,QAAQ8oC,aAKrCh4C,GAAQ2R,gBAAgBvS,KAAK2sC,eAIjC9sC,EAAOD,QAAUmD,GAIb,SAASlD,EAAQD,EAASM,GAuB9B,QAAS8C,GAAU+yB,EAAMjmB,GACvB9P,KAAKK,GAAKM,EAAK6E,aACfxF,KAAK+1B,KAAOA,EAEZ/1B,KAAKy1B,gBACH2b,iBAAkB,OAClB6H,aAAc,UACdphC,MAAM,EACNqhC,UAAU,EACVC,YAAa,QACbpI,QACEhhC,SAAS,EACT4lB,YAAa,UAEfvnB,MAAO,OACPgrC,UACEnlC,MAAO,GACPolC,cAAe,UACfjQ,MAAO,UAETmH,YACExgC,SAAS,EACTygC,gBAAiB,cACjBC,MAAO,IAETj9B,YACEzD,SAAS,EACT2D,KAAM,EACNtF,MAAO,UAETkrC,UACE9N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPz3B,MAAO,OACPgW,SAAS,EACT6T,YAAY,EACZD,aACEn1B,MAAQrE,IAAK+B,OAAW9B,IAAK8B,QAC7ByiB,OAASxkB,IAAK+B,OAAW9B,IAAK8B,UAkBlCmzC,QACExpC,SAAS,EACT27B,OAAO,EACPhjC,MACEuhB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJ75B,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBACpCz1B,KAAKmxB,OACLnxB,KAAK8G,SACL9G,KAAK0D,OAAS,KACd1D,KAAKu1B,UACLv1B,KAAKw5C,oBAAqB,EAC1Bx5C,KAAKy5C,iBAAkB,EACvBz5C,KAAK05C,yBAA0B,CAE/B,IAAI7jC,GAAK7V,IACTA,MAAKm3B,UAAY,KACjBn3B,KAAKo3B,WAAa,KAGlBp3B,KAAKq0C,eACH1/B,IAAK,SAAarK,EAAOkL,EAAQC,GAC/BI,EAAGy+B,OAAO9+B,EAAOvT,QAEnBsU,OAAQ,SAAgBjM,EAAOkL,EAAQC,GACrCI,EAAG0+B,UAAU/+B,EAAOvT,QAEtB+V,OAAQ,SAAgB1N,EAAOkL,EAAQC,GACrCI,EAAG2+B,UAAUh/B,EAAOvT,SAKxBjC,KAAKy0C,gBACH9/B,IAAK,SAAarK,EAAOkL,EAAQC,GAC/BI,EAAG6+B,aAAal/B,EAAOvT,QAEzBsU,OAAQ,SAAgBjM,EAAOkL,EAAQC,GACrCI,EAAG8+B,gBAAgBn/B,EAAOvT,QAE5B+V,OAAQ,SAAgB1N,EAAOkL,EAAQC,GACrCI,EAAG++B,gBAAgBp/B,EAAOvT,SAI9BjC,KAAKiC,SACLjC,KAAK80C,aACL90C,KAAK25C,UAAY35C,KAAK+1B,KAAKe,MAAM7lB,MACjCjR,KAAKg1C,eAELh1C,KAAK2sC,eACL3sC,KAAK4U,WAAW9E,GAChB9P,KAAKgwC,0BAA4B,GACjChwC,KAAK45C,QAAU,EACf55C,KAAK+1B,KAAKE,QAAQhhB,GAAG,eAAgB,WACnCY,EAAG8jC,UAAY9jC,EAAGkgB,KAAKe,MAAM7lB,MAC7B4E,EAAGy1B,IAAIl9B,MAAM1F,KAAO/H,EAAKsK,OAAOK,QAAQuK,EAAG/O,MAAMmN,OACjD4B,EAAGuN,OAAO7iB,KAAKsV,GAAI,KAIrB7V,KAAK81B,UACL91B,KAAKwxC,WAAclG,IAAKtrC,KAAKsrC,IAAKqB,YAAa3sC,KAAK2sC,YAAa78B,QAAS9P,KAAK8P,QAASylB,OAAQv1B,KAAKu1B,QACrGv1B,KAAK+1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAItuB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7B25C,EAAoB35C,EAAoB,IAExC+0C,EAAY,eAgJhBjyC,GAAU6R,UAAY,GAAItS,GAK1BS,EAAU6R,UAAUihB,QAAU,WAC5B,GAAI7U,GAAQtO,SAASM,cAAc,MACnCgO,GAAMnY,UAAY,iBAClB9I,KAAKmxB,IAAIlQ,MAAQA,EAGjBjhB,KAAKsrC,IAAM34B,SAASC,gBAAgB,6BAA8B,OAClE5S,KAAKsrC,IAAIl9B,MAAMgX,SAAW,WAC1BplB,KAAKsrC,IAAIl9B,MAAM8F,QAAU,GAAKlU,KAAK8P,QAAQqpC,aAAaxtC,QAAQ,KAAM,IAAM,KAC5E3L,KAAKsrC,IAAIl9B,MAAMg/B,QAAU,QACzBnsB,EAAMpO,YAAY7S,KAAKsrC,KAGvBtrC,KAAK8P,QAAQwpC,SAAS3jB,YAAc,OACpC31B,KAAK85B,UAAY,GAAIp3B,GAAS1C,KAAK+1B,KAAM/1B,KAAK8P,QAAQwpC,SAAUt5C,KAAKsrC,IAAKtrC,KAAK8P,QAAQylB,QAEvFv1B,KAAK8P,QAAQwpC,SAAS3jB,YAAc,QACpC31B,KAAK+5B,WAAa,GAAIr3B,GAAS1C,KAAK+1B,KAAM/1B,KAAK8P,QAAQwpC,SAAUt5C,KAAKsrC,IAAKtrC,KAAK8P,QAAQylB,cACjFv1B,MAAK8P,QAAQwpC,SAAS3jB,YAG7B31B,KAAKg6B,WAAa,GAAIj3B,GAAO/C,KAAK+1B,KAAM/1B,KAAK8P,QAAQypC,OAAQ,OAAQv5C,KAAK8P,QAAQylB,QAClFv1B,KAAKi6B,YAAc,GAAIl3B,GAAO/C,KAAK+1B,KAAM/1B,KAAK8P,QAAQypC,OAAQ,QAASv5C,KAAK8P,QAAQylB,QAEpFv1B,KAAKonC,QAOPpkC,EAAU6R,UAAUD,WAAa,SAAU9E,GACzC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAY,eAAgB,SAAU,cAAe,mBAAoB,QAAS,WAAY,WAAY,OAAQ,SACpGnJ,UAAxB0J,EAAQqpC,aAAgD/yC,SAAnB0J,EAAQoE,QAAsE9N,SAA9CpG,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,QAC1GlU,KAAKy5C,iBAAkB,EACvBz5C,KAAK05C,yBAA0B,GACwBtzC,SAA9CpG,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,QAAgD9N,SAAxB0J,EAAQqpC,aACxEptC,UAAU+D,EAAQqpC,YAAc,IAAIxtC,QAAQ,KAAM,KAAO3L,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,SAC9FlU,KAAKy5C,iBAAkB,GAG3B94C,EAAKsG,oBAAoBsI,EAAQvP,KAAK8P,QAASA,GAC/CnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,cACzCnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,cACzCnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,UACzCnP,EAAKiP,aAAa5P,KAAK8P,QAASA,EAAS,UAErCA,EAAQygC,YACuB,gBAAtBzgC,GAAQygC,YACbzgC,EAAQygC,WAAWC,kBACqB,WAAtC1gC,EAAQygC,WAAWC,gBACrBxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,EACe,WAAtC3gC,EAAQygC,WAAWC,gBAC5BxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,GAEhCzwC,KAAK8P,QAAQygC,WAAWC,gBAAkB,cAC1CxwC,KAAK8P,QAAQygC,WAAWE,MAAQ,KAMpCzwC,KAAK85B,WACkB1zB,SAArB0J,EAAQwpC,WACVt5C,KAAK85B,UAAUllB,WAAW5U,KAAK8P,QAAQwpC,UACvCt5C,KAAK+5B,WAAWnlB,WAAW5U,KAAK8P,QAAQwpC,WAIxCt5C,KAAKg6B,YACgB5zB,SAAnB0J,EAAQypC,SACVv5C,KAAKg6B,WAAWplB,WAAW5U,KAAK8P,QAAQypC,QACxCv5C,KAAKi6B,YAAYrlB,WAAW5U,KAAK8P,QAAQypC,SAIzCv5C,KAAKu1B,OAAOvvB,eAAeivC,IAC7Bj1C,KAAKu1B,OAAO0f,GAAWrgC,WAAW9E,GAKlC9P,KAAKmxB,IAAIlQ,OACXjhB,KAAKojB,QAAO,IAOhBpgB,EAAU6R,UAAUsyB,KAAO,WAErBnnC,KAAKmxB,IAAIlQ,MAAMpW,YACjB7K,KAAKmxB,IAAIlQ,MAAMpW,WAAW1G,YAAYnE,KAAKmxB,IAAIlQ,QAQnDje,EAAU6R,UAAUuyB,KAAO,WAEpBpnC,KAAKmxB,IAAIlQ,MAAMpW,YAClB7K,KAAK+1B,KAAK5E,IAAI5D,OAAO1a,YAAY7S,KAAKmxB,IAAIlQ,QAQ9Cje,EAAU6R,UAAU2iB,SAAW,SAAUv1B,GACvC,GACI6U,GADAjB,EAAK7V,KAEL82C,EAAe92C,KAAKm3B,SAGxB,IAAKl1B,EAEE,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAGtD,KAAM,IAAIoG,WAAU,kDAFpBlH,MAAKm3B,UAAYl1B,MAFjBjC,MAAKm3B,UAAY,IAkBnB,IAXI2f,IAEFn2C,EAAK0I,QAAQrJ,KAAKq0C,cAAe,SAAU/qC,EAAUgB,GACnDwsC,EAAa1hC,IAAI9K,EAAOhB,KAI1BwN,EAAMggC,EAAat/B,SACnBxX,KAAKw0C,UAAU19B,IAGb9W,KAAKm3B,UAAW,CAElB,GAAI92B,GAAKL,KAAKK,EACdM,GAAK0I,QAAQrJ,KAAKq0C,cAAe,SAAU/qC,EAAUgB,GACnDuL,EAAGshB,UAAUliB,GAAG3K,EAAOhB,EAAUjJ,KAInCyW,EAAM9W,KAAKm3B,UAAU3f,SACrBxX,KAAKs0C,OAAOx9B,GAEd9W,KAAKm1C,mBAELn1C,KAAKojB,QAAO,IAOdpgB,EAAU6R,UAAU0iB,UAAY,SAAUhC,GACxC,GACIze,GADAjB,EAAK7V,IAgBT,IAZIA,KAAKo3B,aACPz2B,EAAK0I,QAAQrJ,KAAKy0C,eAAgB,SAAUnrC,EAAUgB,GACpDuL,EAAGuhB,WAAW9hB,YAAYhL,EAAOhB,KAInCwN,EAAM9W,KAAKo3B,WAAW5f,SACtBxX,KAAKo3B,WAAa,KAClBp3B,KAAK40C,gBAAgB99B,IAIlBye,EAEE,CAAA,KAAIA,YAAkB10B,IAAW00B,YAAkBz0B,IAGxD,KAAM,IAAIoG,WAAU,kDAFpBlH,MAAKo3B,WAAa7B,MAFlBv1B,MAAKo3B,WAAa,IAOpB,IAAIp3B,KAAKo3B,WAAY,CAEnB,GAAI/2B,GAAKL,KAAKK,EACdM,GAAK0I,QAAQrJ,KAAKy0C,eAAgB,SAAUnrC,EAAUgB,GACpDuL,EAAGuhB,WAAWniB,GAAG3K,EAAOhB,EAAUjJ,KAIpCyW,EAAM9W,KAAKo3B,WAAW5f,SACtBxX,KAAK00C,aAAa59B,GAEpB9W,KAAKu0C,aAQPvxC,EAAU6R,UAAU0/B,UAAY,SAAUz9B,GACxC9W,KAAKm1C,mBACLn1C,KAAK85C,sBAEL95C,KAAKojB,QAAO,IAEdpgB,EAAU6R,UAAUy/B,OAAS,SAAUx9B,GACrC9W,KAAKu0C,UAAUz9B,IAEjB9T,EAAU6R,UAAU2/B,UAAY,SAAU19B,GACxC9W,KAAKu0C,UAAUz9B,IAEjB9T,EAAU6R,UAAU8/B,gBAAkB,SAAUE,GAC9C,IAAK,GAAIruC,GAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAAK,CACxC,GAAI6M,GAAQrT,KAAKo3B,WAAWxgB,IAAIi+B,EAASruC,GACzCxG,MAAK+5C,aAAa1mC,EAAOwhC,EAASruC,IAIpCxG,KAAKojB,QAAO,IAEdpgB,EAAU6R,UAAU6/B,aAAe,SAAUG,GAC3C70C,KAAK20C,gBAAgBE,IAQvB7xC,EAAU6R,UAAU+/B,gBAAkB,SAAUC,GAC9C,IAAK,GAAIruC,GAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/BxG,KAAKu1B,OAAOvvB,eAAe6uC,EAASruC,MACmB,SAArDxG,KAAKu1B,OAAOsf,EAASruC,IAAIsJ,QAAQshC,kBACnCpxC,KAAK+5B,WAAWoT,YAAY0H,EAASruC,IACrCxG,KAAKi6B,YAAYkT,YAAY0H,EAASruC,IACtCxG,KAAKi6B,YAAY7W,WAEjBpjB,KAAK85B,UAAUqT,YAAY0H,EAASruC,IACpCxG,KAAKg6B,WAAWmT,YAAY0H,EAASruC,IACrCxG,KAAKg6B,WAAW5W,gBAEXpjB,MAAKu1B,OAAOsf,EAASruC,IAGhCxG,MAAKm1C,mBAELn1C,KAAKojB,QAAO,IAUdpgB,EAAU6R,UAAUklC,aAAe,SAAU1mC,EAAOomB,GAC7Cz5B,KAAKu1B,OAAOvvB,eAAeyzB,IAU9Bz5B,KAAKu1B,OAAOkE,GAASljB,OAAOlD,GACyB,SAAjDrT,KAAKu1B,OAAOkE,GAAS3pB,QAAQshC,kBAC/BpxC,KAAK+5B,WAAWmT,YAAYzT,EAASz5B,KAAKu1B,OAAOkE,IACjDz5B,KAAKi6B,YAAYiT,YAAYzT,EAASz5B,KAAKu1B,OAAOkE,MAElDz5B,KAAK85B,UAAUoT,YAAYzT,EAASz5B,KAAKu1B,OAAOkE,IAChDz5B,KAAKg6B,WAAWkT,YAAYzT,EAASz5B,KAAKu1B,OAAOkE,OAfnDz5B,KAAKu1B,OAAOkE,GAAW,GAAI92B,GAAW0Q,EAAOomB,EAASz5B,KAAK8P,QAAS9P,KAAKgwC,0BACpB,SAAjDhwC,KAAKu1B,OAAOkE,GAAS3pB,QAAQshC,kBAC/BpxC,KAAK+5B,WAAWiT,SAASvT,EAASz5B,KAAKu1B,OAAOkE,IAC9Cz5B,KAAKi6B,YAAY+S,SAASvT,EAASz5B,KAAKu1B,OAAOkE,MAE/Cz5B,KAAK85B,UAAUkT,SAASvT,EAASz5B,KAAKu1B,OAAOkE,IAC7Cz5B,KAAKg6B,WAAWgT,SAASvT,EAASz5B,KAAKu1B,OAAOkE,MAYlDz5B,KAAKg6B,WAAW5W,SAChBpjB,KAAKi6B,YAAY7W,UAQnBpgB,EAAU6R,UAAUilC,oBAAsB,WACxC,GAAsB,MAAlB95C,KAAKm3B,UAAmB,CAC1B,GACIsC,GADAugB,IAEJ,KAAKvgB,IAAWz5B,MAAKu1B,OACfv1B,KAAKu1B,OAAOvvB,eAAeyzB,KAC7BugB,EAAcvgB,MAGlB,KAAK,GAAIviB,KAAUlX,MAAKm3B,UAAU7iB,MAChC,GAAItU,KAAKm3B,UAAU7iB,MAAMtO,eAAekR,GAAS,CAC/C,GAAIxG,GAAO1Q,KAAKm3B,UAAU7iB,MAAM4C,EAChC,IAAkC9Q,SAA9B4zC,EAActpC,EAAK2C,OACrB,KAAM,IAAI7P,OAAM,4IAElBkN,GAAKyC,EAAIxS,EAAKgH,QAAQ+I,EAAKyC,EAAG,QAC9B6mC,EAActpC,EAAK2C,OAAO7L,KAAKkJ,GAGnC,IAAK+oB,IAAWz5B,MAAKu1B,OACfv1B,KAAKu1B,OAAOvvB,eAAeyzB,IAC7Bz5B,KAAKu1B,OAAOkE,GAASjC,SAASwiB,EAAcvgB,MAWpDz2B,EAAU6R,UAAUsgC,iBAAmB,WACrC,GAAIn1C,KAAKm3B,WAA+B,MAAlBn3B,KAAKm3B,UAAmB,CAC5C,GAAI8iB,GAAmB,CACvB,KAAK,GAAI/iC,KAAUlX,MAAKm3B,UAAU7iB,MAChC,GAAItU,KAAKm3B,UAAU7iB,MAAMtO,eAAekR,GAAS,CAC/C,GAAIxG,GAAO1Q,KAAKm3B,UAAU7iB,MAAM4C,EACpB9Q,SAARsK,IACEA,EAAK1K,eAAe,SACHI,SAAfsK,EAAK2C,QACP3C,EAAK2C,MAAQ4hC,GAGfvkC,EAAK2C,MAAQ4hC,EAEfgF,EAAmBvpC,EAAK2C,OAAS4hC,EAAYgF,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKj6C,MAAKu1B,OAAO0f,GACnBj1C,KAAKg6B,WAAWmT,YAAY8H,GAC5Bj1C,KAAKi6B,YAAYkT,YAAY8H,GAC7Bj1C,KAAK85B,UAAUqT,YAAY8H,GAC3Bj1C,KAAK+5B,WAAWoT,YAAY8H,OACvB,CACL,GAAI5hC,IAAUhT,GAAI40C,EAAWnhC,QAAS9T,KAAK8P,QAAQmpC,aACnDj5C,MAAK+5C,aAAa1mC,EAAO4hC,eAGpBj1C,MAAKu1B,OAAO0f,GACnBj1C,KAAKg6B,WAAWmT,YAAY8H,GAC5Bj1C,KAAKi6B,YAAYkT,YAAY8H,GAC7Bj1C,KAAK85B,UAAUqT,YAAY8H,GAC3Bj1C,KAAK+5B,WAAWoT,YAAY8H,EAG9Bj1C,MAAKg6B,WAAW5W,SAChBpjB,KAAKi6B,YAAY7W,UAOnBpgB,EAAU6R,UAAUuO,OAAS,SAAU82B,GACrC,GAAI9P,IAAU,CAGdpqC,MAAK8G,MAAMmN,MAAQjU,KAAKmxB,IAAIlQ,MAAMuQ,YAClCxxB,KAAK8G,MAAMoN,OAASlU,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,OAGhC9N,SAAnBpG,KAAKk2C,WAA2Bl2C,KAAK8G,MAAMmN,QAC7CimC,GAAmB,GAIrB9P,EAAUpqC,KAAKmqC,cAAgBC,CAG/B,IAAI2L,GAAkB/1C,KAAK+1B,KAAKe,MAAM5lB,IAAMlR,KAAK+1B,KAAKe,MAAM7lB,MACxD+kC,EAASD,GAAmB/1C,KAAKi2C,mBA2BrC,IA1BAj2C,KAAKi2C,oBAAsBF,EAIZ,GAAX3L,IACFpqC,KAAKsrC,IAAIl9B,MAAM6F,MAAQtT,EAAKsK,OAAOK,OAAO,EAAItL,KAAK8G,MAAMmN,OACzDjU,KAAKsrC,IAAIl9B,MAAM1F,KAAO/H,EAAKsK,OAAOK,QAAQtL,KAAK8G,MAAMmN,QAGN,KAA1CjU,KAAK8P,QAAQoE,OAAS,IAAI3M,QAAQ,MAA8C,GAAhCvH,KAAK05C,2BACxD15C,KAAKy5C,iBAAkB,IAKC,GAAxBz5C,KAAKy5C,iBACHz5C,KAAK8P,QAAQqpC,aAAen5C,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,OAAS,OAC1ElU,KAAK8P,QAAQqpC,YAAcn5C,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,OAAS,KACvElU,KAAKsrC,IAAIl9B,MAAM8F,OAASlU,KAAK+1B,KAAKC,SAASkD,gBAAgBhlB,OAAS,MAEtElU,KAAKy5C,iBAAkB,GAEvBz5C,KAAKsrC,IAAIl9B,MAAM8F,QAAU,GAAKlU,KAAK8P,QAAQqpC,aAAaxtC,QAAQ,KAAM,IAAM,KAI/D,GAAXy+B,GAA6B,GAAV4L,GAA6C,GAA3Bh2C,KAAKw5C,oBAAkD,GAApBU,EAC1E9P,EAAUpqC,KAAKm6C,gBAAkB/P,MAGjC,IAAsB,GAAlBpqC,KAAK25C,UAAgB,CACvB,GAAIzuB,GAASlrB,KAAK+1B,KAAKe,MAAM7lB,MAAQjR,KAAK25C,UACtC7iB,EAAQ92B,KAAK+1B,KAAKe,MAAM5lB,IAAMlR,KAAK+1B,KAAKe,MAAM7lB,KAClD,IAAwB,GAApBjR,KAAK8G,MAAMmN,MAAY,CACzB,GAAImmC,GAAmBp6C,KAAK8G,MAAMmN,MAAQ6iB,EACtCljB,EAAUsX,EAASkvB,CACvBp6C,MAAKsrC,IAAIl9B,MAAM1F,MAAQ1I,KAAK8G,MAAMmN,MAAQL,EAAU,MAO1D,MAFA5T,MAAKg6B,WAAW5W,SAChBpjB,KAAKi6B,YAAY7W,SACVgnB,GAOTpnC,EAAU6R,UAAUslC,aAAe,WAGjC,GADAv5C,EAAQsR,gBAAgBlS,KAAK2sC,aACL,GAApB3sC,KAAK8G,MAAMmN,OAAgC,MAAlBjU,KAAKm3B,UAAmB,CACnD,GAAI9jB,GAAO7M,EACP6zC,KACAC,KACAC,KACAC,GAAe,EAGf3F,IACJ,KAAK,GAAIpb,KAAWz5B,MAAKu1B,OACnBv1B,KAAKu1B,OAAOvvB,eAAeyzB,KAC7BpmB,EAAQrT,KAAKu1B,OAAOkE,GACC,GAAjBpmB,EAAM4W,SAAgE7jB,SAA5CpG,KAAK8P,QAAQylB,OAAOsE,WAAWJ,IAAqE,GAA3Cz5B,KAAK8P,QAAQylB,OAAOsE,WAAWJ,IACpHob,EAASrtC,KAAKiyB,GAIpB,IAAIob,EAASnuC,OAAS,EAAG,CAEvB,GAAI+zC,GAAUz6C,KAAK+1B,KAAKp1B,KAAKi2B,cAAc52B,KAAK+1B,KAAKC,SAASt2B,KAAKuU,OAC/DymC,EAAU16C,KAAK+1B,KAAKp1B,KAAKi2B,aAAa,EAAI52B,KAAK+1B,KAAKC,SAASt2B,KAAKuU,OAClEmjB,IAQJ,KANAp3B,KAAK26C,iBAAiB9F,EAAUzd,EAAYqjB,EAASC,GAGrD16C,KAAK46C,eAAe/F,EAAUzd,GAGzB5wB,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/B6zC,EAAsBxF,EAASruC,IAAMxG,KAAK66C,qBAAqBzjB,EAAWyd,EAASruC,IAIrFxG,MAAK86C,YAAYjG,EAAUwF,EAAuBE,GAIlDC,EAAex6C,KAAK+6C,aAAalG,EAAU0F,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwBx6C,KAAK45C,QAAUoB,EAKzC,MAJAp6C,GAAQ2R,gBAAgBvS,KAAK2sC,aAC7B3sC,KAAKw5C,oBAAqB,EAC1Bx5C,KAAK45C,UACL55C,KAAK+1B,KAAKE,QAAQhH,KAAK,WAChB,CASP,KAPIjvB,KAAK45C,QAAUoB,GACjB3f,QAAQtG,IAAI,6EAEd/0B,KAAK45C,QAAU,EACf55C,KAAKw5C,oBAAqB,EAGrBhzC,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/B6M,EAAQrT,KAAKu1B,OAAOsf,EAASruC,IAC7B8zC,EAAmBzF,EAASruC,IAAMxG,KAAKi7C,qBAAqB7jB,EAAWyd,EAASruC,IAAK6M,EAIvF,KAAK7M,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/B6M,EAAQrT,KAAKu1B,OAAOsf,EAASruC,IACF,OAAvB6M,EAAMvD,QAAQ1B,OAEhBiF,EAAMk+B,KAAK+I,EAAmBzF,EAASruC,IAAK6M,EAAOrT,KAAKwxC,UAG5DqI,GAAkBtI,KAAKsD,EAAUyF,EAAoBt6C,KAAKwxC,YAOhE,MADA5wC,GAAQ2R,gBAAgBvS,KAAK2sC,cACtB,GAgBT3pC,EAAU6R,UAAU8lC,iBAAmB,SAAU9F,EAAUzd,EAAYqjB,EAASC,GAC9E,GAAIrnC,GAAO7M,EAAGymB,EAAGvc,CACjB,IAAImkC,EAASnuC,OAAS,EACpB,IAAKF,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAAK,CACpC6M,EAAQrT,KAAKu1B,OAAOsf,EAASruC,IAC7B4wB,EAAWyd,EAASruC,MACpB,IAAI00C,GAAgB9jB,EAAWyd,EAASruC,GAExC,IAA0B,GAAtB6M,EAAMvD,QAAQ+H,KAAc,CAC9B,GAAIsjC,GAAQz2C,KAAKJ,IAAI,EAAG3D,EAAKiQ,kBAAkByC,EAAM8jB,UAAWsjB,EAAS,IAAK,UAC9E,KAAKxtB,EAAIkuB,EAAOluB,EAAI5Z,EAAM8jB,UAAUzwB,OAAQumB,IAE1C,GADAvc,EAAO2C,EAAM8jB,UAAUlK,GACV7mB,SAATsK,EAAoB,CACtB,GAAIA,EAAKyC,EAAIunC,EAAS,CACpBQ,EAAc1zC,KAAKkJ,EACnB,OAEAwqC,EAAc1zC,KAAKkJ,QAKzB,KAAKuc,EAAI,EAAGA,EAAI5Z,EAAM8jB,UAAUzwB,OAAQumB,IACtCvc,EAAO2C,EAAM8jB,UAAUlK,GACV7mB,SAATsK,GACEA,EAAKyC,EAAIsnC,GAAW/pC,EAAKyC,EAAIunC,GAC/BQ,EAAc1zC,KAAKkJ,KAejC1N,EAAU6R,UAAU+lC,eAAiB,SAAU/F,EAAUzd,GACvD,GAAI/jB,EACJ,IAAIwhC,EAASnuC,OAAS,EACpB,IAAK,GAAIF,GAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAEnC,GADA6M,EAAQrT,KAAKu1B,OAAOsf,EAASruC,IACC,GAA1B6M,EAAMvD,QAAQopC,SAAkB,CAClC,GAAIgC,GAAgB9jB,EAAWyd,EAASruC,GACxC,IAAI00C,EAAcx0C,OAAS,EAAG,CAC5B,GAAI00C,GAAY,EACZC,EAAiBH,EAAcx0C,OAI/B40C,EAAYt7C,KAAK+1B,KAAKp1B,KAAK61B,eAAe0kB,EAAcA,EAAcx0C,OAAS,GAAGyM,GAAKnT,KAAK+1B,KAAKp1B,KAAK61B,eAAe0kB,EAAc,GAAG/nC,GACtIooC,EAAiBF,EAAiBC,CACtCF,GAAY12C,KAAKL,IAAIK,KAAK82C,KAAK,GAAMH,GAAiB32C,KAAKJ,IAAI,EAAGI,KAAKqqB,MAAMwsB,IAG7E,KAAK,GADDE,MACKxuB,EAAI,EAAOouB,EAAJpuB,EAAoBA,GAAKmuB,EACvCK,EAAYj0C,KAAK0zC,EAAcjuB,GAEjCmK,GAAWyd,EAASruC,IAAMi1C,KAepCz4C,EAAU6R,UAAUimC,YAAc,SAAUjG,EAAUzd,EAAYmjB,GAChE,GAAIjJ,GAAWj+B,EAAO7M,EAGlBsJ,EAFA4rC,KACAC,IAEJ,IAAI9G,EAASnuC,OAAS,EAAG,CACvB,IAAKF,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/B8qC,EAAYla,EAAWyd,EAASruC,IAChCsJ,EAAU9P,KAAKu1B,OAAOsf,EAASruC,IAAIsJ,QAC/BwhC,EAAU5qC,OAAS,IACrB2M,EAAQrT,KAAKu1B,OAAOsf,EAASruC,IAES,SAAlCsJ,EAAQspC,SAASC,eAA6C,OAAjBvpC,EAAQ1B,MACvB,QAA5B0B,EAAQshC,iBACVsK,EAAsBA,EAAoBhmC,OAAOrC,EAAMg+B,UAAUC,IAEjEqK,EAAuBA,EAAqBjmC,OAAOrC,EAAMg+B,UAAUC,IAGrEiJ,EAAY1F,EAASruC,IAAM6M,EAAMg+B,UAAUC,EAAWuD,EAASruC,IAMrEqzC,GAAkB+B,oBAAoBF,EAAqBnB,EAAa1F,EAAU,iBAAkB,QACpGgF,EAAkB+B,oBAAoBD,EAAsBpB,EAAa1F,EAAU,kBAAmB,WAU1G7xC,EAAU6R,UAAUkmC,aAAe,SAAUlG,EAAU0F,GACrD,GAOIsB,GACAC,EARA1R,GAAU,EACV2R,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IACVC,EAAW,IACXC,EAAU,KACVC,EAAW,IAIf,IAAIvH,EAASnuC,OAAS,EAAG,CAEvB,IAAK,GAAIF,GAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAAK,CACxC,GAAI6M,GAAQrT,KAAKu1B,OAAOsf,EAASruC,GAC7B6M,IAA2C,SAAlCA,EAAMvD,QAAQshC,kBACzB2K,GAAgB,EAChBE,EAAU,EACVE,EAAU,GACD9oC,GAASA,EAAMvD,QAAQshC,mBAChC4K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAI51C,GAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAC/B+zC,EAAYv0C,eAAe6uC,EAASruC,KAClC+zC,EAAY1F,EAASruC,IAAI61C,UAAW,IACtCR,EAAStB,EAAY1F,EAASruC,IAAInC,IAClCy3C,EAASvB,EAAY1F,EAASruC,IAAIlC,IAEe,SAA7Ci2C,EAAY1F,EAASruC,IAAI4qC,kBAC3B2K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAEtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACF/7C,KAAK85B,UAAUnF,SAASsnB,EAASE,GAEb,GAAlBH,GACFh8C,KAAK+5B,WAAWpF,SAASunB,EAAUE,GAqCvC,MAlCAhS,GAAUpqC,KAAKs8C,qBAAqBP,EAAe/7C,KAAK85B,YAAcsQ,EACtEA,EAAUpqC,KAAKs8C,qBAAqBN,EAAgBh8C,KAAK+5B,aAAeqQ,EAElD,GAAlB4R,GAA2C,GAAjBD,GAC5B/7C,KAAK85B,UAAUyiB,WAAY,EAC3Bv8C,KAAK+5B,WAAWwiB,WAAY,IAE5Bv8C,KAAK85B,UAAUyiB,WAAY,EAC3Bv8C,KAAK+5B,WAAWwiB,WAAY,GAE9Bv8C,KAAK+5B,WAAW2S,QAAUqP,EACI,GAA1B/7C,KAAK+5B,WAAW2S,QACI,GAAlBsP,EACFh8C,KAAK85B,UAAU2S,WAAazsC,KAAK+5B,WAAW9lB,MAE5CjU,KAAK85B,UAAU2S,WAAa,EAG9BrC,EAAUpqC,KAAK85B,UAAU1W,UAAYgnB,EACrCpqC,KAAK+5B,WAAWwS,iBAAmBvsC,KAAK85B,UAAUwS,WAClDtsC,KAAK+5B,WAAWyS,aAAexsC,KAAK85B,UAAU0S,aAC9CpC,EAAUpqC,KAAK+5B,WAAW3W,UAAYgnB,GAEtCA,EAAUpqC,KAAK+5B,WAAW3W,UAAYgnB,EAIE,IAAtCyK,EAASttC,QAAQ,mBACnBstC,EAASzrC,OAAOyrC,EAASttC,QAAQ,kBAAmB,GAEX,IAAvCstC,EAASttC,QAAQ,oBACnBstC,EAASzrC,OAAOyrC,EAASttC,QAAQ,mBAAoB,GAGhD6iC,GAWTpnC,EAAU6R,UAAUynC,qBAAuB,SAAUE,EAAUrZ,GAC7D,GAAI3B,IAAU,CAYd,OAXgB,IAAZgb,EACErZ,EAAKhS,IAAIlQ,MAAMpW,YAA6B,GAAfs4B,EAAKjJ,SACpCiJ,EAAKgE,OACL3F,GAAU,GAGP2B,EAAKhS,IAAIlQ,MAAMpW,YAA6B,GAAfs4B,EAAKjJ,SACrCiJ,EAAKiE,OACL5F,GAAU,GAGPA,GAYTx+B,EAAU6R,UAAUgmC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEAtmB,EAAWt2B,KAAK+1B,KAAKp1B,KAAK21B,SAErB9vB,EAAI,EAAGA,EAAIi2C,EAAW/1C,OAAQF,IACrCk2C,EAASpmB,EAASmmB,EAAWj2C,GAAG2M,GAAKnT,KAAK8G,MAAMmN,MAChD0oC,EAASF,EAAWj2C,GAAG4M,EACvBwpC,EAAcp1C,MAAO2L,EAAGupC,EAAQtpC,EAAGupC,GAGrC,OAAOC,IAaT55C,EAAU6R,UAAUomC,qBAAuB,SAAUwB,EAAYppC,GAC/D,GACIqpC,GAAQC,EADRC,KAEAtmB,EAAWt2B,KAAK+1B,KAAKp1B,KAAK21B,SAC1B6M,EAAOnjC,KAAK85B,UACZ+iB,EAAY/4C,OAAO9D,KAAKsrC,IAAIl9B,MAAM8F,OAAOvI,QAAQ,KAAM,IACrB,UAAlC0H,EAAMvD,QAAQshC,mBAChBjO,EAAOnjC,KAAK+5B,WAGd,KAAK,GAAIvzB,GAAI,EAAGA,EAAIi2C,EAAW/1C,OAAQF,IAAK,CAC1C,GAAIs2C,EAOJA,GAAaL,EAAWj2C,GAAGmN,MAAQ8oC,EAAWj2C,GAAGmN,MAAQ,KACzD+oC,EAASpmB,EAASmmB,EAAWj2C,GAAG2M,GAAKnT,KAAK8G,MAAMmN,MAChD0oC,EAASj4C,KAAKqqB,MAAMoU,EAAK8L,aAAawN,EAAWj2C,GAAG4M,IACpDwpC,EAAcp1C,MAAO2L,EAAGupC,EAAQtpC,EAAGupC,EAAQhpC,MAAOmpC,IAKpD,MAFAzpC,GAAMi9B,gBAAgB5rC,KAAKL,IAAIw4C,EAAW1Z,EAAK8L,aAAa,KAErD2N,GAGT/8C,EAAOD,QAAUoD,GAIb,SAASnD,EAAQD,EAASM,GAkB9B,QAAS+C,GAAS8yB,EAAMjmB,GACtB9P,KAAKmxB,KACHoI,WAAY,KACZ2S,SACA6Q,cACAC,cACA3qC,WACE65B,SACA6Q,cACAC,gBAGJh9C,KAAK8G,OACHgwB,OACE7lB,MAAO,EACPC,IAAK,EACLysB,YAAa,GAEfsf,QAAS,GAGXj9C,KAAKy1B,gBACHE,YAAa,SACb6V,iBAAiB,EACjBC,iBAAiB,EACjB9H,OAAQ,KACRtN,SAAU,MAEZr2B,KAAK8P,QAAUnP,EAAKiG,UAAW5G,KAAKy1B,gBAEpCz1B,KAAK+1B,KAAOA,EAGZ/1B,KAAK81B,UAEL91B,KAAK4U,WAAW9E,GAjDlB,GAAInP,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/BuD,EAASvD,EAAoB,GAgDjC+C,GAAS4R,UAAY,GAAItS,GAUzBU,EAAS4R,UAAUD,WAAa,SAAU9E,GACpCA,IAEFnP,EAAKkG,iBAAiB,kBAAmB,kBAAmB,cAAe,SAAU,YAAa7G,KAAK8P,QAASA,GAE5G,eAAiBA,KACgB,gBAAxBA,GAAQ6lB,YACjB31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YACK,gBAAxB7lB,GAAQ6lB,aAA4B,QAAU7lB,GAAQ6lB,cACtE31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YAAYwN,OAM/C,UAAYrzB,KACe,kBAAlBrM,GAAO+iC,OAEhB/iC,EAAO+iC,OAAO12B,EAAQ02B,QAEtB/iC,EAAOgjC,KAAK32B,EAAQ02B,WAS5BvjC,EAAS4R,UAAUihB,QAAU,WAC3B91B,KAAKmxB,IAAIoI,WAAa5mB,SAASM,cAAc,OAC7CjT,KAAKmxB,IAAI5jB,WAAaoF,SAASM,cAAc,OAE7CjT,KAAKmxB,IAAIoI,WAAWzwB,UAAY,+BAChC9I,KAAKmxB,IAAI5jB,WAAWzE,UAAY,gCAMlC7F,EAAS4R,UAAUG,QAAU,WAEvBhV,KAAKmxB,IAAIoI,WAAW1uB,YACtB7K,KAAKmxB,IAAIoI,WAAW1uB,WAAW1G,YAAYnE,KAAKmxB,IAAIoI,YAElDv5B,KAAKmxB,IAAI5jB,WAAW1C,YACtB7K,KAAKmxB,IAAI5jB,WAAW1C,WAAW1G,YAAYnE,KAAKmxB,IAAI5jB,YAGtDvN,KAAK+1B,KAAO,MAOd9yB,EAAS4R,UAAUuO,OAAS,WAC1B,GAAItT,GAAU9P,KAAK8P,QACfhJ,EAAQ9G,KAAK8G,MACbyyB,EAAav5B,KAAKmxB,IAAIoI,WACtBhsB,EAAavN,KAAKmxB,IAAI5jB,WAGtBxC,EAAgC,OAAvB+E,EAAQ6lB,YAAuB31B,KAAK+1B,KAAK5E,IAAIvoB,IAAM5I,KAAK+1B,KAAK5E,IAAInM,OAC1Ek4B,EAAgB3jB,EAAW1uB,aAAeE,CAG9C/K,MAAK4tC,oBAGL,IAAIpC,GAAkBxrC,KAAK8P,QAAQ07B,gBAC/BC,EAAkBzrC,KAAK8P,QAAQ27B,eAGnC3kC,GAAM+mC,iBAAmBrC,EAAkB1kC,EAAMgnC,gBAAkB,EACnEhnC,EAAMinC,iBAAmBtC,EAAkB3kC,EAAMknC,gBAAkB,EACnElnC,EAAMoN,OAASpN,EAAM+mC,iBAAmB/mC,EAAMinC,iBAC9CjnC,EAAMmN,MAAQslB,EAAW/H,YAEzB1qB,EAAMonC,gBAAkBluC,KAAK+1B,KAAKC,SAASt2B,KAAKwU,OAASpN,EAAMinC,kBAA2C,OAAvBj+B,EAAQ6lB,YAAuB31B,KAAK+1B,KAAKC,SAAShR,OAAO9Q,OAASlU,KAAK+1B,KAAKC,SAASptB,IAAIsL,QAC5KpN,EAAMmnC,eAAiB,EACvBnnC,EAAMsnC,gBAAkBtnC,EAAMonC,gBAAkBpnC,EAAMinC,iBACtDjnC,EAAMqnC,eAAiB,CAGvB,IAAIgP,GAAwB5jB,EAAW6jB,YACnCC,EAAwB9vC,EAAW6vC,WAoBvC,OAnBA7jB,GAAW1uB,YAAc0uB,EAAW1uB,WAAW1G,YAAYo1B,GAC3DhsB,EAAW1C,YAAc0C,EAAW1C,WAAW1G,YAAYoJ,GAE3DgsB,EAAWnrB,MAAM8F,OAASlU,KAAK8G,MAAMoN,OAAS,KAE9ClU,KAAKs9C,iBAGDH,EACFpyC,EAAOiI,aAAaumB,EAAY4jB,GAEhCpyC,EAAO8H,YAAY0mB,GAEjB8jB,EACFr9C,KAAK+1B,KAAK5E,IAAIsZ,mBAAmBz3B,aAAazF,EAAY8vC,GAE1Dr9C,KAAK+1B,KAAK5E,IAAIsZ,mBAAmB53B,YAAYtF,GAGxCvN,KAAKmqC,cAAgB+S,GAO9Bj6C,EAAS4R,UAAUyoC,eAAiB,WAClC,GAAI3nB,GAAc31B,KAAK8P,QAAQ6lB,YAG3B1kB,EAAQtQ,EAAKgH,QAAQ3H,KAAK+1B,KAAKe,MAAM7lB,MAAO,UAC5CC,EAAMvQ,EAAKgH,QAAQ3H,KAAK+1B,KAAKe,MAAM5lB,IAAK,UACxCqsC,EAAgBv9C,KAAK+1B,KAAKp1B,KAAK+1B,OAA2C,GAAnC12B,KAAK8G,MAAMyoC,gBAAkB,KAASznC,UAC7E61B,EAAc4f,EAAgB57C,EAASy7B,wBAAwBp9B,KAAK+1B,KAAKI,YAAan2B,KAAK+1B,KAAKe,MAAOymB,EAC3G5f,IAAe39B,KAAK+1B,KAAKp1B,KAAK+1B,OAAO,GAAG5uB,SAExC,IAAI6hB,GAAO,GAAI5nB,GAAS,GAAI+C,MAAKmM,GAAQ,GAAInM,MAAKoM,GAAMysB,EAAa39B,KAAK+1B,KAAKI,YAC3En2B,MAAK8P,QAAQ6zB,QACfha,EAAKya,UAAUpkC,KAAK8P,QAAQ6zB,QAE1B3jC,KAAK8P,QAAQumB,UACf1M,EAAK0b,SAASrlC,KAAK8P,QAAQumB,UAE7Br2B,KAAK2pB,KAAOA,CAKZ,IAAIwH,GAAMnxB,KAAKmxB,GACfA,GAAI9e,UAAU65B,MAAQ/a,EAAI+a,MAC1B/a,EAAI9e,UAAU0qC,WAAa5rB,EAAI4rB,WAC/B5rB,EAAI9e,UAAU2qC,WAAa7rB,EAAI6rB,WAC/B7rB,EAAI+a,SACJ/a,EAAI4rB,cACJ5rB,EAAI6rB,aAEJ,IAAIQ,GAEA/d,EAGAge,EAGA30C,EAPAqK,EAAI,EAEJuqC,EAAQ,EACRzpC,EAAQ,EAER0pC,EAAmBv3C,OACnB9B,EAAM,CAIV,KADAqlB,EAAK2a,QACE3a,EAAKyV,WAAmB,IAAN96B,GACvBA,IAEAk5C,EAAM7zB,EAAKC,aACX6V,EAAU9V,EAAK8V,UACf32B,EAAY6gB,EAAKsc,eAEjByX,EAAQvqC,EACRA,EAAInT,KAAK+1B,KAAKp1B,KAAK21B,SAASknB,GAC5BvpC,EAAQd,EAAIuqC,EACRD,IACFA,EAASrvC,MAAM6F,MAAQA,EAAQ,MAG7BjU,KAAK8P,QAAQ07B,iBACfxrC,KAAK49C,kBAAkBzqC,EAAGwW,EAAKoc,gBAAiBpQ,EAAa7sB,GAG3D22B,GAAWz/B,KAAK8P,QAAQ27B,iBACtBt4B,EAAI,IACkB/M,QAApBu3C,IACFA,EAAmBxqC,GAErBnT,KAAK69C,kBAAkB1qC,EAAGwW,EAAKqc,gBAAiBrQ,EAAa7sB,IAE/D20C,EAAWz9C,KAAK89C,kBAAkB3qC,EAAGwiB,EAAa7sB,IAElD20C,EAAWz9C,KAAK+9C,kBAAkB5qC,EAAGwiB,EAAa7sB,GAGpD6gB,EAAKE,MAIP,IAAI7pB,KAAK8P,QAAQ27B,gBAAiB,CAChC,GAAIuS,GAAWh+C,KAAK+1B,KAAKp1B,KAAK+1B,OAAO,GACjCunB,EAAWt0B,EAAKqc,cAAcgY,GAC9BE,EAAYD,EAASv3C,QAAU1G,KAAK8G,MAAMwoC,gBAAkB,IAAM,IAE9ClpC,QAApBu3C,GAA6CA,EAAZO,IACnCl+C,KAAK69C,kBAAkB,EAAGI,EAAUtoB,EAAa7sB,GAKrDnI,EAAK0I,QAAQrJ,KAAKmxB,IAAI9e,UAAW,SAAUjK,GACzC,KAAOA,EAAI1B,QAAQ,CACjB,GAAI8B,GAAOJ,EAAI+1C,KACX31C,IAAQA,EAAKqC,YACfrC,EAAKqC,WAAW1G,YAAYqE,OAcpCvF,EAAS4R,UAAU+oC,kBAAoB,SAAUzqC,EAAG2X,EAAM6K,EAAa7sB,GAErE,GAAI6K,GAAQ3T,KAAKmxB,IAAI9e,UAAU2qC,WAAWtqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAAS88B,eAAe,GACtC97B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClB9T,KAAKmxB,IAAIoI,WAAW1mB,YAAYc,GAElC3T,KAAKmxB,IAAI6rB,WAAWx1C,KAAKmM,GAEzBA,EAAMyqC,WAAW,GAAGC,UAAYvzB,EAEhCnX,EAAMvF,MAAMxF,IAAqB,OAAf+sB,EAAuB31B,KAAK8G,MAAMinC,iBAAmB,KAAO,IAC9Ep6B,EAAMvF,MAAM1F,KAAOyK,EAAI,KACvBQ,EAAM7K,UAAY,sBAAwBA,GAY5C7F,EAAS4R,UAAUgpC,kBAAoB,SAAU1qC,EAAG2X,EAAM6K,EAAa7sB,GAErE,GAAI6K,GAAQ3T,KAAKmxB,IAAI9e,UAAU0qC,WAAWrqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAAS88B,eAAe3kB,EACtCnX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClB9T,KAAKmxB,IAAIoI,WAAW1mB,YAAYc,GAElC3T,KAAKmxB,IAAI4rB,WAAWv1C,KAAKmM,GAEzBA,EAAMyqC,WAAW,GAAGC,UAAYvzB,EAChCnX,EAAM7K,UAAY,sBAAwBA,EAG1C6K,EAAMvF,MAAMxF,IAAqB,OAAf+sB,EAAuB,IAAM31B,KAAK8G,MAAM+mC,iBAAmB,KAC7El6B,EAAMvF,MAAM1F,KAAOyK,EAAI,MAWzBlQ,EAAS4R,UAAUkpC,kBAAoB,SAAU5qC,EAAGwiB,EAAa7sB,GAE/D,GAAImoB,GAAOjxB,KAAKmxB,IAAI9e,UAAU65B,MAAMx5B,OAC/Bue,KAEHA,EAAOte,SAASM,cAAc,OAC9BjT,KAAKmxB,IAAI5jB,WAAWsF,YAAYoe,IAElCjxB,KAAKmxB,IAAI+a,MAAM1kC,KAAKypB,EAEpB,IAAInqB,GAAQ9G,KAAK8G,KAWjB,OAVmB,OAAf6uB,EACF1E,EAAK7iB,MAAMxF,IAAM9B,EAAMinC,iBAAmB,KAE1C9c,EAAK7iB,MAAMxF,IAAM5I,KAAK+1B,KAAKC,SAASptB,IAAIsL,OAAS,KAEnD+c,EAAK7iB,MAAM8F,OAASpN,EAAMonC,gBAAkB,KAC5Cjd,EAAK7iB,MAAM1F,KAAOyK,EAAIrM,EAAMmnC,eAAiB,EAAI,KAEjDhd,EAAKnoB,UAAY,mCAAqCA,EAE/CmoB,GAWThuB,EAAS4R,UAAUipC,kBAAoB,SAAU3qC,EAAGwiB,EAAa7sB,GAE/D,GAAImoB,GAAOjxB,KAAKmxB,IAAI9e,UAAU65B,MAAMx5B,OAC/Bue,KAEHA,EAAOte,SAASM,cAAc,OAC9BjT,KAAKmxB,IAAI5jB,WAAWsF,YAAYoe,IAElCjxB,KAAKmxB,IAAI+a,MAAM1kC,KAAKypB,EAEpB,IAAInqB,GAAQ9G,KAAK8G,KAWjB,OAVmB,OAAf6uB,EACF1E,EAAK7iB,MAAMxF,IAAM,IAEjBqoB,EAAK7iB,MAAMxF,IAAM5I,KAAK+1B,KAAKC,SAASptB,IAAIsL,OAAS,KAEnD+c,EAAK7iB,MAAM1F,KAAOyK,EAAIrM,EAAMqnC,eAAiB,EAAI,KACjDld,EAAK7iB,MAAM8F,OAASpN,EAAMsnC,gBAAkB,KAE5Cnd,EAAKnoB,UAAY,mCAAqCA,EAE/CmoB,GAQThuB,EAAS4R,UAAU+4B,mBAAqB,WAKjC5tC,KAAKmxB,IAAIue,mBACZ1vC,KAAKmxB,IAAIue,iBAAmB/8B,SAASM,cAAc,OACnDjT,KAAKmxB,IAAIue,iBAAiB5mC,UAAY,iCACtC9I,KAAKmxB,IAAIue,iBAAiBthC,MAAMgX,SAAW,WAE3CplB,KAAKmxB,IAAIue,iBAAiB78B,YAAYF,SAAS88B,eAAe,MAC9DzvC,KAAKmxB,IAAIoI,WAAW1mB,YAAY7S,KAAKmxB,IAAIue,mBAE3C1vC,KAAK8G,MAAMgnC,gBAAkB9tC,KAAKmxB,IAAIue,iBAAiBrpB,aACvDrmB,KAAK8G,MAAMyoC,eAAiBvvC,KAAKmxB,IAAIue,iBAAiBvuB,YAGjDnhB,KAAKmxB,IAAIye,mBACZ5vC,KAAKmxB,IAAIye,iBAAmBj9B,SAASM,cAAc,OACnDjT,KAAKmxB,IAAIye,iBAAiB9mC,UAAY,iCACtC9I,KAAKmxB,IAAIye,iBAAiBxhC,MAAMgX,SAAW,WAE3CplB,KAAKmxB,IAAIye,iBAAiB/8B,YAAYF,SAAS88B,eAAe,MAC9DzvC,KAAKmxB,IAAIoI,WAAW1mB,YAAY7S,KAAKmxB,IAAIye,mBAE3C5vC,KAAK8G,MAAMknC,gBAAkBhuC,KAAKmxB,IAAIye,iBAAiBvpB,aACvDrmB,KAAK8G,MAAMwoC,eAAiBtvC,KAAKmxB,IAAIye,iBAAiBzuB,aAGxDthB,EAAOD,QAAUqD,GAIb,SAASpD,EAAQD,EAASM,GA0F9B,QAASgD,GAAQiY,EAAW/G,EAAMtE,GAChC,GAAIwuC,GAAQt+C,IAEZ,MAAMA,eAAgBkD,IACpB,KAAM,IAAIkY,aAAY,mDAIxBpb,MAAK8P,WACL9P,KAAKy1B,gBACH8oB,YAAY,GAEd59C,EAAKiG,OAAO5G,KAAK8P,QAAS9P,KAAKy1B,gBAG/Bz1B,KAAK+1B,MACHyoB,SACAC,eACAC,SACAC,eACAvqC,MACEoqC,MAAO,KACPE,MAAO,MAETE,WACEC,WAAY,aACZC,WAAY,aACZhe,WAAY,cAEd7K,SACEhhB,GAAIjV,KAAKiV,GAAGihB,KAAKl2B,MACjBoV,IAAKpV,KAAKoV,IAAI8gB,KAAKl2B,MACnBivB,KAAMjvB,KAAKivB,KAAKiH,KAAKl2B,MACrB++C,KAAM/+C,KAAK++C,KAAK7oB,KAAKl2B,OAEvBg/C,gBACEC,MAAO,aACPC,QAAS,aACTC,YAAa,aACbC,OAAQ,aACRC,YAAa,aACbC,OAAQ,aACRC,UAAW,aACXC,aAAc,aACdC,QAAS,aACTC,YAAa,aACbC,UAAW,aACXC,UAAW,cAEbzkC,UAAWA,EACX0kC,MACEp7C,MAAO,EACP2a,aAAejM,EAAG,EAAGC,EAAG,KAK5BpT,KAAK8/C,oBAGL,IAAIC,GAAS,GAAI38C,GAAO,WACtB,MAAOk7C,GAAMvoB,KAAKE,QAAQhH,KAAK,mBAEjCjvB,MAAKu1B,OAAS,GAAIyqB,GAAS,WAC3BhgD,KAAKkhB,OAAS,GAAI++B,GAAS,WAAWjgD,KAAK+1B,MAC3C/1B,KAAKkgD,iBAAmB,GAAIC,GAAmB,WAAWngD,KAAK+1B,KAAM/1B,KAAKkhB,QAC1ElhB,KAAKogD,mBAAqB,GAAIC,GAAqB,WAAWrgD,KAAK+1B,KAAM/1B,KAAKkhB,OAAQlhB,KAAKkgD;AAC3FlgD,KAAK6/C,KAAO,GAAIS,GAAO,WAAWtgD,KAAK+1B,KAAM/1B,KAAKkhB,QAClDlhB,KAAKugD,SAAW,GAAIC,GAAiB,WAAWxgD,KAAK+1B,KAAM/1B,KAAKkhB,QAChElhB,KAAKygD,QAAU,GAAIC,GAAgB,WAAW1gD,KAAK+1B,MACnD/1B,KAAK2gD,aAAe,GAAIC,GAAe,WAAW5gD,KAAK+1B,MACvD/1B,KAAK6gD,WAAa,GAAIC,GAAgB,WAAW9gD,KAAK+1B,MACtD/1B,KAAK+gD,aAAe,GAAIC,GAAqB,WAAWhhD,KAAK+1B,KAAM/1B,KAAKkhB,OAAQlhB,KAAKkgD,kBAErFlgD,KAAKihD,aAAe,GAAIC,GAAe,WAAWlhD,KAAK+1B,KAAMgqB,EAAQ//C,KAAKu1B,OAAQv1B,KAAK2gD,cACvF3gD,KAAKmhD,aAAe,GAAIC,GAAe,WAAWphD,KAAK+1B,KAAMgqB,EAAQ//C,KAAKu1B,QAE1Ev1B,KAAKqhD,oBAAsB,GAAIC,GAAsB,WAAWthD,MAGhEA,KAAKkhB,OAAO4U,UAGZ91B,KAAK4U,WAAW9E,GAGhB9P,KAAK2Z,QAAQvF,GA5Kf,GAAImtC,GAA0B,SAAUz7C,GAAO,MAAOA,IAAOA,EAAI07C,WAAa17C,GAAQ27C,UAAW37C,IAE7F47C,EAAUxhD,EAAoB,IAE9B8/C,EAAWuB,EAAwBG,GAEnCC,EAAgBzhD,EAAoB,IAEpCghD,EAAiBK,EAAwBI,GAEzCC,EAAgB1hD,EAAoB,IAEpCkhD,EAAiBG,EAAwBK,GAEzCC,EAAiB3hD,EAAoB,IAErCwgD,EAAkBa,EAAwBM,GAE1CC,EAAiB5hD,EAAoB,IAErC4gD,EAAkBS,EAAwBO,GAE1CC,EAAkB7hD,EAAoB,IAEtCsgD,EAAmBe,EAAwBQ,GAE3CC,EAAU9hD,EAAoB,IAE9B+/C,EAAWsB,EAAwBS,GAEnCC,EAAQ/hD,EAAoB,IAE5BogD,EAASiB,EAAwBU,GAEjCC,EAAsBhiD,EAAoB,IAE1CmgD,EAAuBkB,EAAwBW,GAE/CC,EAAoBjiD,EAAoB,IAExCigD,EAAqBoB,EAAwBY,GAE7CC,EAAgBliD,EAAoB,IAEpC0gD,EAAiBW,EAAwBa,GAEzCC,EAAsBniD,EAAoB,IAE1C8gD,EAAuBO,EAAwBc,GAE/CC,EAAuBpiD,EAAoB,IAE3CohD,EAAwBC,EAAwBe,GAEhDC,EAAariD,EAAoB,IAEjCsiD,EAAcjB,EAAwBgB,GAEtCE,EAAcviD,EAAoB,IAElCwiD,EAAenB,EAAwBkB,EAG3CviD,GAAoB,GAEpB,IAAIye,GAAUze,EAAoB,IAE9BS,GADST,EAAoB,IACtBA,EAAoB,IAG3BmD,GAFUnD,EAAoB,GACnBA,EAAoB,GACnBA,EAAoB,KAChCoD,EAAcpD,EAAoB,IAClCkD,EAASlD,EAAoB,IAC7ByiD,EAAYziD,EAAoB,GAuGpCye,GAAQzb,EAAQ2R,WAMhB3R,EAAQ2R,UAAUD,WAAa,SAAU9E,GACvC,GAAgB1J,SAAZ0J,EAAuB,CAEzB,GAAI8yC,GAAaJ,EAAY,WAAWK,SAAS/yC,EAAS4yC,EAAa,WACnEE,MAAe,IACjB9yC,KACAurB,QAAQtG,IAAI,6FAA8FwtB,EAAWO,aAIvHhzC,EAAU9P,KAAK2gD,aAAa/rC,WAAW9E,EAAQizC,OAAQjzC,GAGvD9P,KAAKu1B,OAAO3gB,WAAW9E,EAAQylB,QAC/Bv1B,KAAKihD,aAAarsC,WAAW9E,EAAQ0uC,OACrCx+C,KAAKmhD,aAAavsC,WAAW9E,EAAQ4uC,OACrC1+C,KAAKygD,QAAQ7rC,WAAW9E,EAAQ2wC,SAChCzgD,KAAKkhB,OAAOtM,WAAW9E,EAAQoR,QAC/BlhB,KAAKugD,SAAS3rC,WAAW9E,EAAQkzC,WACjChjD,KAAK6/C,KAAKjrC,WAAW9E,EAAQ+vC,MAC7B7/C,KAAKogD,mBAAmBxrC,WAAW9E,EAAQmzC,aAC3CjjD,KAAKkgD,iBAAiBtrC,WAAW9E,EAAQglC,WACzC90C,KAAK6gD,WAAWjsC,WAAW9E,EAAQ+wC,YACnC7gD,KAAK+gD,aAAansC,WAAW9E,EAAQixC,cAErC/gD,KAAKqhD,oBAAoBzsC,WAAW9E,GAGT1J,SAAvB0J,EAAQyuC,WACNzuC,EAAQyuC,cAAe,EACFn4C,SAAnBpG,KAAKkjD,YACPljD,KAAKkjD,UAAY,GAAIP,GAAU3iD,KAAKihB,OACpCjhB,KAAKkjD,UAAUjuC,GAAG,SAAUjV,KAAKmjD,gBAAgBjtB,KAAKl2B,SAGjCoG,SAAnBpG,KAAKkjD,YACPljD,KAAKkjD,UAAUluC,gBACRhV,MAAKkjD,WAEdljD,KAAK+1B,KAAKE,QAAQhH,KAAK,aAGzBjvB,KAAK+1B,KAAKE,QAAQhH,KAAK,YAGzBjvB,KAAKkhB,OAAOiF,UAGZnmB,KAAK+1B,KAAKE,QAAQhH,KAAK,qBAQ3B/rB,EAAQ2R,UAAUuuC,sBAAwB,WACxC,GAAI5E,GAAQx+C,KAAK+1B,KAAKyoB,MAClBE,EAAQ1+C,KAAK+1B,KAAK2oB,KACtB1+C,MAAK+1B,KAAK0oB,eACVz+C,KAAK+1B,KAAK4oB,cAEV,KAAK,GAAI0E,KAAU7E,GACbA,EAAMx4C,eAAeq9C,IACnB7E,EAAM6E,GAAQvzC,QAAQoqB,UAAW,GACnCl6B,KAAK+1B,KAAK0oB,YAAYj3C,KAAK67C,EAKjC,KAAK,GAAIC,KAAU5E,GACbA,EAAM14C,eAAes9C,IACnB5E,EAAM4E,GAAQxzC,QAAQoqB,UAAW,GACnCl6B,KAAK+1B,KAAK4oB,YAAYn3C,KAAK87C,IAMnCpgD,EAAQ2R,UAAUirC,mBAAqB,WACrC,GAAIyD,GAASvjD,IAGbA,MAAK+1B,KAAKE,QAAQhhB,GAAG,eAAgB,SAAUO,GAE7C+tC,EAAOH,wBACPG,EAAO9C,QAAQ+C,uBAGfD,EAAOxtB,KAAKE,QAAQhH,KAAK,kBAI3BjvB,KAAK+1B,KAAKE,QAAQhhB,GAAG,eAAgB,WAEnCsuC,EAAOE,kBAAkBF,EAAOxtB,KAAKyoB,OACrC+E,EAAOE,kBAAkBF,EAAOxtB,KAAK2oB,OAErC6E,EAAOxtB,KAAKE,QAAQhH,KAAK,sBAe7B/rB,EAAQ2R,UAAU8E,QAAU,SAAUvF,GAQpC,GANApU,KAAK+1B,KAAKE,QAAQhH,KAAK,gBACvBjvB,KAAK+1B,KAAKE,QAAQhH,KAAK,cAGvBjvB,KAAKkgD,iBAAiBwD,cAElBtvC,GAAQA,EAAK8c,MAAQ9c,EAAKoqC,OAASpqC,EAAKsqC,OAC1C,KAAM,IAAItjC,aAAY,iGAMxB,IAFApb,KAAK4U,WAAWR,GAAQA,EAAKtE,SAEzBsE,GAAQA,EAAK8c,KAEf,GAAI9c,GAAQA,EAAK8c,IAAK,CACpB,GAAIyyB,GAAUtgD,EAAUugD,WAAWxvC,EAAK8c,IAExC,YADAlxB,MAAK2Z,QAAQgqC,QAGV,IAAIvvC,GAAQA,EAAKyvC,OAEtB,GAAIzvC,GAAQA,EAAKyvC,MAAO,CACtB,GAAIC,GAAYxgD,EAAYygD,WAAW3vC,EAAKyvC,MAE5C,YADA7jD,MAAK2Z,QAAQmqC,QAIf9jD,MAAKihD,aAAatnC,QAAQvF,GAAQA,EAAKoqC,OAAO,GAC9Cx+C,KAAKmhD,aAAaxnC,QAAQvF,GAAQA,EAAKsqC,OAAO,EAIhD1+C,MAAK+1B,KAAKE,QAAQhH,KAAK,gBAGvBjvB,KAAK+1B,KAAKE,QAAQhH,KAAK,gBASzB/rB,EAAQ2R,UAAUG,QAAU,WAC1BhV,KAAK+1B,KAAKE,QAAQhH,KAAK,WAEvBjvB,KAAK+1B,KAAKE,QAAQ7gB,MAElBpV,KAAKoV,MAGLzU,EAAKoD,mBAAmB/D,KAAK+1B,KAAK5a,YAWpCjY,EAAQ2R,UAAU4uC,kBAAoB,SAAU39C,GAC9C,GAAIzF,GAGAyd,EAAW1X,OACX2X,EAAW3X,OACX49C,EAAa,CACjB,KAAK3jD,IAAMyF,GACT,GAAIA,EAAIE,eAAe3F,GAAK,CAC1B,GAAImE,GAAQsB,EAAIzF,GAAIiW,UACNlQ,UAAV5B,IACFsZ,EAAwB1X,SAAb0X,EAAyBtZ,EAAQE,KAAKL,IAAIG,EAAOsZ,GAC5DC,EAAwB3X,SAAb2X,EAAyBvZ,EAAQE,KAAKJ,IAAIE,EAAOuZ,GAC5DimC,GAAcx/C,GAMpB,GAAiB4B,SAAb0X,GAAuC1X,SAAb2X,EAC5B,IAAK1d,IAAMyF,GACLA,EAAIE,eAAe3F,IACrByF,EAAIzF,GAAI4jD,cAAcnmC,EAAUC,EAAUimC,IAUlD9gD,EAAQ2R,UAAUqvC,SAAW,WAC3B,OAAQlkD,KAAKkjD,WAAaljD,KAAKkjD,UAAUiB,QAG3CjhD,EAAQ2R,UAAUsR,QAAU,WAC1BnmB,KAAKkhB,OAAOiF,QAAQzM,MAAM1Z,KAAKkhB,OAAQza,YAEzCvD,EAAQ2R,UAAUuvC,YAAc,WAC9BpkD,KAAKkhB,OAAOkjC,YAAY1qC,MAAM1Z,KAAKkhB,OAAQza,YAE7CvD,EAAQ2R,UAAUwvC,YAAc,WAC9BrkD,KAAKkhB,OAAOiF,QAAQk+B,YAAYrkD,KAAKkhB,OAAQza,YAE/CvD,EAAQ2R,UAAUyvC,SAAW,WAC3BtkD,KAAK6gD,WAAWyD,SAAS5qC,MAAM1Z,KAAK6gD,WAAYp6C,YAElDvD,EAAQ2R,UAAU0vC,UAAY,WAC5BvkD,KAAK6gD,WAAW0D,UAAU7qC,MAAM1Z,KAAK6gD,WAAYp6C,YAEnDvD,EAAQ2R,UAAU2vC,YAAc,WAC9BxkD,KAAK6gD,WAAW2D,YAAY9qC,MAAM1Z,KAAK6gD,WAAYp6C,YAErDvD,EAAQ2R,UAAU4vC,QAAU,WAC1BzkD,KAAK6gD,WAAW4D,QAAQ/qC,MAAM1Z,KAAK6gD,WAAYp6C,YAEjDvD,EAAQ2R,UAAU6vC,oBAAsB,WACtC1kD,KAAK6gD,WAAW6D,oBAAoBhrC,MAAM1Z,KAAK6gD,WAAYp6C,YAE7DvD,EAAQ2R,UAAU8vC,iBAAmB,WACnC3kD,KAAK6gD,WAAW8D,iBAAiBjrC,MAAM1Z,KAAK6gD,WAAYp6C,YAE1DvD,EAAQ2R,UAAU+vC,gBAAkB,WAClC5kD,KAAK6gD,WAAW+D,gBAAgBlrC,MAAM1Z,KAAK6gD,WAAYp6C,YAEzDvD,EAAQ2R,UAAUgwC,QAAU,WAC1B7kD,KAAK2gD,aAAakE,QAAQnrC,MAAM1Z,KAAK2gD,aAAcl6C,YAErDvD,EAAQ2R,UAAUiwC,eAAiB,WACjC9kD,KAAK+gD,aAAa+D,eAAeprC,MAAM1Z,KAAK+gD,aAAct6C,YAE5DvD,EAAQ2R,UAAUkwC,gBAAkB,WAClC/kD,KAAK+gD,aAAagE,gBAAgBrrC,MAAM1Z,KAAK+gD,aAAct6C,YAE7DvD,EAAQ2R,UAAUmwC,YAAc,WAC9BhlD,KAAK+gD,aAAaiE,YAAYtrC,MAAM1Z,KAAK+gD,aAAct6C,YAEzDvD,EAAQ2R,UAAUowC,aAAe,WAC/BjlD,KAAK+gD,aAAakE,aAAavrC,MAAM1Z,KAAK+gD,aAAct6C,YAE1DvD,EAAQ2R,UAAUqwC,YAAc,WAC9BllD,KAAK+gD,aAAamE,YAAYxrC,MAAM1Z,KAAK+gD,aAAct6C,YAEzDvD,EAAQ2R,UAAUswC,aAAe,WAC/BnlD,KAAK+gD,aAAaoE,aAAazrC,MAAM1Z,KAAK+gD,aAAct6C,YAE1DvD,EAAQ2R,UAAUuwC,eAAiB,WACjCplD,KAAK+gD,aAAaqE,eAAe1rC,MAAM1Z,KAAK+gD,aAAct6C,YAE5DvD,EAAQ2R,UAAUwwC,aAAe,WAC/BrlD,KAAKihD,aAAaoE,aAAa3rC,MAAM1Z,KAAKihD,aAAcx6C,YAE1DvD,EAAQ2R,UAAUywC,eAAiB,WACjCtlD,KAAKihD,aAAaqE,eAAe5rC,MAAM1Z,KAAKihD,aAAcx6C,YAE5DvD,EAAQ2R,UAAU0wC,eAAiB,WACjCvlD,KAAKihD,aAAasE,eAAe7rC,MAAM1Z,KAAKihD,aAAcx6C,YAE5DvD,EAAQ2R,UAAU2wC,kBAAoB,WACpCxlD,KAAKihD,aAAauE,kBAAkB9rC,MAAM1Z,KAAKihD,aAAcx6C,YAE/DvD,EAAQ2R,UAAU4wC,SAAW,WAC3BzlD,KAAKihD,aAAawE,SAAS/rC,MAAM1Z,KAAKihD,aAAcx6C,YAEtDvD,EAAQ2R,UAAU6wC,gBAAkB,WAClC1lD,KAAKygD,QAAQiF,gBAAgBhsC,MAAM1Z,KAAKygD,QAASh6C,YAEnDvD,EAAQ2R,UAAU8wC,eAAiB,WACjC3lD,KAAKygD,QAAQkF,eAAejsC,MAAM1Z,KAAKygD,QAASh6C,YAElDvD,EAAQ2R,UAAU+wC,UAAY,WAC5B5lD,KAAKygD,QAAQmF,UAAUlsC,MAAM1Z,KAAKygD,QAASh6C,YAE7CvD,EAAQ2R,UAAUyjB,aAAe,WAC/Bt4B,KAAKkgD,iBAAiB5nB,aAAa5e,MAAM1Z,KAAKkgD,iBAAkBz5C,YAElEvD,EAAQ2R,UAAUgxC,iBAAmB,WACnC7lD,KAAKkgD,iBAAiB2F,iBAAiBnsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAEtEvD,EAAQ2R,UAAUixC,iBAAmB,WACnC9lD,KAAKkgD,iBAAiB4F,iBAAiBpsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAEtEvD,EAAQ2R,UAAUkxC,UAAY,WAC5B/lD,KAAKkgD,iBAAiB6F,UAAUrsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAE/DvD,EAAQ2R,UAAUmxC,UAAY,WAC5BhmD,KAAKkgD,iBAAiB8F,UAAUtsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAE/DvD,EAAQ2R,UAAUoxC,YAAc,WAC9BjmD,KAAKkgD,iBAAiB+F,YAAYvsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAEjEvD,EAAQ2R,UAAUqxC,YAAc,WAC9BlmD,KAAKkgD,iBAAiBgG,YAAYxsC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAEjEvD,EAAQ2R,UAAU6uC,YAAc,WAC9B1jD,KAAKkgD,iBAAiBwD,YAAYhqC,MAAM1Z,KAAKkgD,iBAAkBz5C,YAEjEvD,EAAQ2R,UAAUuhB,SAAW,WAC3Bp2B,KAAK6/C,KAAKzpB,SAAS1c,MAAM1Z,KAAK6/C,KAAMp5C,YAEtCvD,EAAQ2R,UAAUsxC,YAAc,WAC9BnmD,KAAK6/C,KAAKsG,YAAYzsC,MAAM1Z,KAAK6/C,KAAMp5C,YAEzCvD,EAAQ2R,UAAUsjB,IAAM,WACtBn4B,KAAK6/C,KAAK1nB,IAAIze,MAAM1Z,KAAK6/C,KAAMp5C,YAEjCvD,EAAQ2R,UAAUwU,OAAS,WACzBrpB,KAAK6/C,KAAKx2B,OAAO3P,MAAM1Z,KAAK6/C,KAAMp5C,YAEpCvD,EAAQ2R,UAAUuxC,YAAc,WAC9BpmD,KAAK6/C,KAAKuG,YAAY1sC,MAAM1Z,KAAK6/C,KAAMp5C,YAEzCvD,EAAQ2R,UAAUwxC,YAAc,WAC9BrmD,KAAK6/C,KAAKwG,YAAY3sC,MAAM1Z,KAAK6/C,KAAMp5C,YAGzC5G,EAAOD,QAAUsD,GAIb,SAASrD,EAAQD,EAASM,GAQ9B,QAASkD,GAAOkG,GACdtJ,KAAK+/C,UACL//C,KAAKsmD,eACLtmD,KAAKsJ,SAAWA,EASlBlG,EAAOyR,UAAU0xC,KAAO,SAAUC,EAAKC,GACrC,GAAIC,GAAM1mD,KAAK+/C,OAAOyG,EACtB,IAAYpgD,SAARsgD,EAAmB,CAErB,GAAI7wC,GAAK7V,IACT0mD,GAAM,GAAIC,OACVD,EAAIE,OAAS,WAEQ,IAAf5mD,KAAKiU,QACPtB,SAASojB,KAAKljB,YAAY7S,MAC1BA,KAAKiU,MAAQjU,KAAKwxB,YAClBxxB,KAAKkU,OAASlU,KAAK0xB,aACnB/e,SAASojB,KAAK5xB,YAAYnE,OAGxB6V,EAAGvM,WACLuM,EAAGkqC,OAAOyG,GAAOE,EACjB7wC,EAAGvM,SAAStJ,QAIhB0mD,EAAIG,QAAU,WACMzgD,SAAdqgD,GACFprB,QAAQyrB,MAAM,wBAAyBN,SAChCxmD,MAAK+mD,IACRlxC,EAAGvM,UACLuM,EAAGvM,SAAStJ,OAGV6V,EAAGywC,YAAYE,MAAS,GAC1BnrB,QAAQyrB,MAAM,8BAA+BL,SACtCzmD,MAAK+mD,IACRlxC,EAAGvM,UACLuM,EAAGvM,SAAStJ,QAGdq7B,QAAQyrB,MAAM,wBAAyBN,GACvCxmD,KAAK+mD,IAAMN,EACX5wC,EAAGywC,YAAYE,IAAO,IAK5BE,EAAIK,IAAMP,EAGZ,MAAOE,IAGT7mD,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAe9B,QAAS8mD,GAAS5yC,GAEhB,MADA8c,GAAM9c,EACC6yC,IAoCT,QAAS3iB,KACPn7B,EAAQ,EACR1I,EAAIywB,EAAItK,OAAO,GAQjB,QAASiD,KACP1gB,IACA1I,EAAIywB,EAAItK,OAAOzd,GAOjB,QAAS+9C,KACP,MAAOh2B,GAAItK,OAAOzd,EAAQ,GAS5B,QAASg+C,GAAe1mD,GACtB,MAAO2mD,GAAkBj4C,KAAK1O,GAShC,QAAS4mD,GAAM/gD,EAAGC,GAKhB,GAJKD,IACHA,MAGEC,EACF,IAAK,GAAIqR,KAAQrR,GACXA,EAAEP,eAAe4R,KACnBtR,EAAEsR,GAAQrR,EAAEqR,GAIlB,OAAOtR,GAeT,QAASiT,GAASzT,EAAK6qC,EAAMnsC,GAG3B,IAFA,GAAI+J,GAAOoiC,EAAK3nC,MAAM,KAClBs+C,EAAIxhD,EACDyI,EAAK7H,QAAQ,CAClB,GAAIgD,GAAM6E,EAAKmE,OACXnE,GAAK7H,QAEF4gD,EAAE59C,KACL49C,EAAE59C,OAEJ49C,EAAIA,EAAE59C,IAGN49C,EAAE59C,GAAOlF,GAWf,QAAS+iD,GAAQl1B,EAAOm1B,GAOtB,IANA,GAAIhhD,GAAGkB,EACH60B,EAAU,KAGVkrB,GAAUp1B,GACV3yB,EAAO2yB,EACJ3yB,EAAKqL,QACV08C,EAAOjgD,KAAK9H,EAAKqL,QACjBrL,EAAOA,EAAKqL,MAId,IAAIrL,EAAK8+C,MACP,IAAKh4C,EAAI,EAAGkB,EAAMhI,EAAK8+C,MAAM93C,OAAYgB,EAAJlB,EAASA,IAC5C,GAAIghD,EAAKnnD,KAAOX,EAAK8+C,MAAMh4C,GAAGnG,GAAI,CAChCk8B,EAAU78B,EAAK8+C,MAAMh4C,EACrB,OAiBN,IAZK+1B,IAEHA,GACEl8B,GAAImnD,EAAKnnD,IAEPgyB,EAAMm1B,OAERjrB,EAAQmrB,KAAOL,EAAM9qB,EAAQmrB,KAAMr1B,EAAMm1B,QAKxChhD,EAAIihD,EAAO/gD,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACvC,GAAIqF,GAAI47C,EAAOjhD,EAEVqF,GAAE2yC,QACL3yC,EAAE2yC,UAE6B,KAA7B3yC,EAAE2yC,MAAMj3C,QAAQg1B,IAClB1wB,EAAE2yC,MAAMh3C,KAAK+0B,GAKbirB,EAAKE,OACPnrB,EAAQmrB,KAAOL,EAAM9qB,EAAQmrB,KAAMF,EAAKE,OAS5C,QAASC,GAAQt1B,EAAOu1B,GAKtB,GAJKv1B,EAAMqsB,QACTrsB,EAAMqsB,UAERrsB,EAAMqsB,MAAMl3C,KAAKogD,GACbv1B,EAAMu1B,KAAM,CACd,GAAIF,GAAOL,KAAUh1B,EAAMu1B,KAC3BA,GAAKF,KAAOL,EAAMK,EAAME,EAAKF,OAajC,QAAS5I,GAAWzsB,EAAO1H,EAAMC,EAAIhjB,EAAM8/C,GACzC,GAAIE,IACFj9B,KAAMA,EACNC,GAAIA,EACJhjB,KAAMA,EAQR,OALIyqB,GAAMu1B,OACRA,EAAKF,KAAOL,KAAUh1B,EAAMu1B,OAE9BA,EAAKF,KAAOL,EAAMO,EAAKF,SAAYA,GAE5BE,EAOT,QAASC,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGK,MAANxnD,GAAmB,MAANA,GAAoB,OAANA,GAAoB,OAANA,GAE9CopB,GAGF,GAAG,CACD,GAAIq+B,IAAY,CAGhB,IAAU,MAANznD,EAAW,CAGb,IADA,GAAI+F,GAAI2C,EAAQ,EACS,MAAlB+nB,EAAItK,OAAOpgB,IAAgC,MAAlB0qB,EAAItK,OAAOpgB,IACzCA,GAEF,IAAsB,OAAlB0qB,EAAItK,OAAOpgB,IAAiC,KAAlB0qB,EAAItK,OAAOpgB,GAAW,CAElD,KAAY,IAAL/F,GAAgB,MAALA,GAChBopB,GAEFq+B,IAAY,GAGhB,GAAU,MAANznD,GAA+B,MAAlBymD,IAAuB,CAEtC,KAAY,IAALzmD,GAAgB,MAALA,GAChBopB,GAEFq+B,IAAY,EAEd,GAAU,MAANznD,GAA+B,MAAlBymD,IAAuB,CAEtC,KAAY,IAALzmD,GAAS,CACd,GAAU,MAANA,GAA+B,MAAlBymD,IAAuB,CAEtCr9B,IACAA,GACA,OAEAA,IAGJq+B,GAAY,EAId,KAAa,MAANznD,GAAmB,MAANA,GAAoB,OAANA,GAAoB,OAANA,GAE9CopB,UAEKq+B,EAGT,IAAU,KAANznD,EAGF,YADAqnD,EAAYC,EAAUI,UAKxB,IAAIC,GAAK3nD,EAAIymD,GACb,IAAImB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACRv+B,QACAA,IAKF,IAAIw+B,EAAW5nD,GAIb,MAHAqnD,GAAYC,EAAUI,UACtBF,EAAQxnD,MACRopB,IAMF,IAAIs9B,EAAe1mD,IAAY,MAANA,EAAW,CAIlC,IAHAwnD,GAASxnD,EACTopB,IAEOs9B,EAAe1mD,IACpBwnD,GAASxnD,EACTopB,GAUF,OARc,UAAVo+B,EACFA,GAAQ,EACW,SAAVA,EACTA,GAAQ,EACE/iD,MAAMpB,OAAOmkD,MACvBA,EAAQnkD,OAAOmkD,SAEjBH,EAAYC,EAAUO,YAKxB,GAAU,MAAN7nD,EAAW,CAEb,IADAopB,IACY,IAALppB,IAAiB,KAALA,GAAkB,MAANA,GAA+B,MAAlBymD,MAC1Ce,GAASxnD,EACC,MAANA,GAEFopB,IAEFA,GAEF,IAAS,KAALppB,EACF,KAAM8nD,GAAe,2BAIvB,OAFA1+B,UACAi+B,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAAL/nD,GACLwnD,GAASxnD,EACTopB,GAEF,MAAM,IAAIzO,aAAY,yBAA2BqtC,EAAKR,EAAO,IAAM,KAOrE,QAAShB,KACP,GAAI50B,KAwBJ,IAtBAiS,IACAujB,IAGc,WAAVI,IACF51B,EAAMq2B,QAAS,EACfb,MAIY,UAAVI,GAA+B,YAAVA,KACvB51B,EAAMzqB,KAAOqgD,EACbJ,KAIEC,IAAcC,EAAUO,aAC1Bj2B,EAAMhyB,GAAK4nD,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgBt2B,GAGH,KAAT41B,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGOx1B,GAAMm1B,WACNn1B,GAAMu1B,WACNv1B,GAAMA,MAENA,EAOT,QAASs2B,GAAgBt2B,GACvB,KAAiB,KAAV41B,GAAyB,KAATA,GACrBW,EAAev2B,GACD,MAAV41B,GACFJ,IAWN,QAASe,GAAev2B,GAEtB,GAAIw2B,GAAWC,EAAcz2B,EAC7B,IAAIw2B,EAIF,WAFAE,GAAU12B,EAAOw2B,EAMnB,IAAInB,GAAOsB,EAAwB32B,EACnC,KAAIq1B,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAIloD,GAAK4nD,CAGT,IAFAJ,IAEc,MAAVI,EAAe,CAGjB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBl2B,GAAMhyB,GAAM4nD,EACZJ,QAGAoB,GAAmB52B,EAAOhyB,IAS9B,QAASyoD,GAAcz2B,GACrB,GAAIw2B,GAAW,IAgBf,IAbc,aAAVZ,IACFY,KACAA,EAASjhD,KAAO,WAChBigD,IAGIC,IAAcC,EAAUO,aAC1BO,EAASxoD,GAAK4nD,EACdJ,MAKU,MAAVI,EAAe,CAejB,GAdAJ,IAEKgB,IACHA,MAEFA,EAAS99C,OAASsnB,EAClBw2B,EAASrB,KAAOn1B,EAAMm1B,KACtBqB,EAASjB,KAAOv1B,EAAMu1B,KACtBiB,EAASx2B,MAAQA,EAAMA,MAGvBs2B,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAASrB,WACTqB,GAASjB,WACTiB,GAASx2B,YACTw2B,GAAS99C,OAGXsnB,EAAM62B,YACT72B,EAAM62B,cAER72B,EAAM62B,UAAU1hD,KAAKqhD,GAGvB,MAAOA,GAYT,QAASG,GAAwB32B,GAE/B,MAAc,SAAV41B,GACFJ,IAGAx1B,EAAMm1B,KAAO2B,IACN,QACY,SAAVlB,GACTJ,IAGAx1B,EAAMu1B,KAAOuB,IACN,QACY,UAAVlB,GACTJ,IAGAx1B,EAAMA,MAAQ82B,IACP,SAGF,KAQT,QAASF,GAAmB52B,EAAOhyB,GAEjC,GAAImnD,IACFnnD,GAAIA,GAEFqnD,EAAOyB,GACPzB,KACFF,EAAKE,KAAOA,GAEdH,EAAQl1B,EAAOm1B,GAGfuB,EAAU12B,EAAOhyB,GAQnB,QAAS0oD,GAAU12B,EAAO1H,GACxB,KAAiB,OAAVs9B,GAA4B,OAAVA,GAAgB,CACvC,GAAIr9B,GACAhjB,EAAOqgD,CACXJ,IAEA,IAAIgB,GAAWC,EAAcz2B,EAC7B,IAAIw2B,EACFj+B,EAAKi+B,MACA,CACL,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvB39B,GAAKq9B,EACLV,EAAQl1B,GACNhyB,GAAIuqB,IAENi9B,IAIF,GAAIH,GAAOyB,IAGPvB,EAAO9I,EAAWzsB,EAAO1H,EAAMC,EAAIhjB,EAAM8/C,EAC7CC,GAAQt1B,EAAOu1B,GAEfj9B,EAAOC,GASX,QAASu+B,KAGP,IAFA,GAAIzB,GAAO,KAEM,MAAVO,GAAe,CAGpB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAI3wC,GAAOqwC,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAI/jD,GAAQyjD,CACZ1uC,GAASmuC,EAAM9vC,EAAMpT,GAErBqjD,IACa,KAATI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAIhuC,aAAYguC,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAa9+C,EAAQ,KAStF,QAASs/C,GAAK39B,EAAMu+B,GAClB,MAAOv+B,GAAKpkB,QAAU2iD,EAAYv+B,EAAOA,EAAK1e,OAAO,EAAG,IAAM,MAShE,QAASk9C,GAASC,EAAQC,EAAQ1uC,GAC5B/T,MAAMC,QAAQuiD,GAChBA,EAAOlgD,QAAQ,SAAUogD,GACnB1iD,MAAMC,QAAQwiD,GAChBA,EAAOngD,QAAQ,SAAUqgD,GACvB5uC,EAAG2uC,EAAOC,KAGZ5uC,EAAG2uC,EAAOD,KAIVziD,MAAMC,QAAQwiD,GAChBA,EAAOngD,QAAQ,SAAUqgD,GACvB5uC,EAAGyuC,EAAQG,KAGb5uC,EAAGyuC,EAAQC,GAWjB,QAAS5F,GAAWxvC,GAElB,GAAIuvC,GAAUqD,EAAS5yC,GACnBu1C,GACFnL,SACAE,SACA5uC,WAmBF,IAfI6zC,EAAQnF,OACVmF,EAAQnF,MAAMn1C,QAAQ,SAAUugD,GAC9B,GAAIC,IACFxpD,GAAIupD,EAAQvpD,GACZsT,MAAO/O,OAAOglD,EAAQj2C,OAASi2C,EAAQvpD,IAEzCgnD,GAAMwC,EAAWD,EAAQlC,MACrBmC,EAAUC,QACZD,EAAUE,MAAQ,SAEpBJ,EAAUnL,MAAMh3C,KAAKqiD,KAKrBlG,EAAQjF,MAAO,CAMjB,GAAIsL,GAAc,SAAqBC,GACrC,GAAIC,IACFv/B,KAAMs/B,EAAQt/B,KACdC,GAAIq/B,EAAQr/B,GAId,OAFAy8B,GAAM6C,EAAWD,EAAQvC,MACzBwC,EAAU97C,MAAyB,OAAjB67C,EAAQriD,KAAgB,QAAU,OAC7CsiD,EAGTvG,GAAQjF,MAAMr1C,QAAQ,SAAU4gD,GAC9B,GAAIt/B,GAAMC,CAERD,GADEs/B,EAAQt/B,eAAgBvjB,QACnB6iD,EAAQt/B,KAAK6zB,OAGlBn+C,GAAI4pD,EAAQt/B,MAKdC,EADEq/B,EAAQr/B,aAAcxjB,QACnB6iD,EAAQr/B,GAAG4zB,OAGdn+C,GAAI4pD,EAAQr/B,IAIZq/B,EAAQt/B,eAAgBvjB,SAAU6iD,EAAQt/B,KAAK+zB,OACjDuL,EAAQt/B,KAAK+zB,MAAMr1C,QAAQ,SAAU8gD,GACnC,GAAID,GAAYF,EAAYG,EAC5BR,GAAUjL,MAAMl3C,KAAK0iD,KAIzBZ,EAAS3+B,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAIu/B,GAAUrL,EAAW6K,EAAWh/B,EAAKtqB,GAAIuqB,EAAGvqB,GAAI4pD,EAAQriD,KAAMqiD,EAAQvC,MACtEwC,EAAYF,EAAYG,EAC5BR,GAAUjL,MAAMl3C,KAAK0iD,KAGnBD,EAAQr/B,aAAcxjB,SAAU6iD,EAAQr/B,GAAG8zB,OAC7CuL,EAAQr/B,GAAG8zB,MAAMr1C,QAAQ,SAAU8gD,GACjC,GAAID,GAAYF,EAAYG,EAC5BR,GAAUjL,MAAMl3C,KAAK0iD,OAW7B,MAJIvG,GAAQ+D,OACViC,EAAU75C,QAAU6zC,EAAQ+D,MAGvBiC,EAxxBT,GAAI5B,IACFC,KAAM,EACNG,UAAW,EACXG,WAAY,EACZE,QAAS,GAIPH,GACF+B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJ15B,EAAM,GACN/nB,EAAQ,EACR1I,EAAI,GACJwnD,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBZ,EAAoB,iBAguBxBxnD,GAAQonD,SAAWA,EACnBpnD,EAAQgkD,WAAaA,GAIjB,SAAS/jD,EAAQD,EAASM,GAI9B,QAAS6jD,GAAW8G,EAAW/6C,GAC7B,GAAI4uC,MACAF,IACJx+C,MAAK8P,SACH4uC,OACEoM,cAAc,GAEhBtM,OACEuM,eAAe,EACfr+C,YAAY,IAIAtG,SAAZ0J,IACF9P,KAAK8P,QAAQ0uC,MAAMuM,cAAgBj7C,EAAQi7C,eAAgB,EAC3D/qD,KAAK8P,QAAQ0uC,MAAM9xC,WAAaoD,EAAQpD,YAAa,EACrD1M,KAAK8P,QAAQ4uC,MAAMoM,aAAeh7C,EAAQg7C,cAAe,EAK3D,KAAK,GAFDE,GAASH,EAAUnM,MACnBuM,EAASJ,EAAUrM,MACdh4C,EAAI,EAAGA,EAAIwkD,EAAOtkD,OAAQF,IAAK,CACtC,GAAIohD,MACAsD,EAAQF,EAAOxkD,EACnBohD,GAAKvnD,GAAK6qD,EAAM7qD,GAChBunD,EAAKj9B,KAAOugC,EAAMC,OAClBvD,EAAKh9B,GAAKsgC,EAAMxgD,OAChBk9C,EAAKrf,WAAa2iB,EAAM3iB,WAGxBqf,EAAK37C,MAAQi/C,EAAMj/C,MACnB27C,EAAKkD,aAA8B1kD,SAAfwhD,EAAK37C,OAAsB,EAAQjM,KAAK8P,QAAQg7C,aACpEpM,EAAMl3C,KAAKogD,GAGb,IAAK,GAAIphD,GAAI,EAAGA,EAAIykD,EAAOvkD,OAAQF,IAAK,CACtC,GAAIghD,MACA4D,EAAQH,EAAOzkD,EACnBghD,GAAKnnD,GAAK+qD,EAAM/qD,GAChBmnD,EAAKjf,WAAa6iB,EAAM7iB,WACxBif,EAAKr0C,EAAIi4C,EAAMj4C,EACfq0C,EAAKp0C,EAAIg4C,EAAMh4C,EACfo0C,EAAK7zC,MAAQy3C,EAAMz3C,MACf3T,KAAK8P,QAAQ0uC,MAAM9xC,cAAe,EACpC86C,EAAKv7C,MAAQm/C,EAAMn/C,MAEnBu7C,EAAKv7C,MAAwB7F,SAAhBglD,EAAMn/C,OAAwBsB,WAAY69C,EAAMn/C,MAAOuB,OAAQ49C,EAAMn/C,OAAU7F,OAE9FohD,EAAK16B,OAASs+B,EAAM13C,KACpB8zC,EAAK6D,eAAiBrrD,KAAK8P,QAAQ0uC,MAAMuM,cACzCvD,EAAK8D,eAAiBtrD,KAAK8P,QAAQ0uC,MAAMuM,cACzCvM,EAAMh3C,KAAKggD,GAGb,OAAShJ,MAAOA,EAAOE,MAAOA,GAGhC9+C,EAAQmkD,WAAaA,GAIjB,SAASlkD,EAAQD,EAASM,GAM9BL,EAAOD,QAA4B,mBAAX2K,SAA0BA,OAAO9G,QAAUvD,EAAoB,KAInF,SAASL,EAAQD,EAASM,GAM9B,GAAsB,mBAAXqK,QAAwB,CACjC,GAAIghD,GAAcrrD,EAAoB,IAClCyD,EAAS4G,OAAO5G,QAAUzD,EAAoB,GAClDL,GAAOD,QAAU2rD,EAAY5nD,GAC3B0G,eAAgB,cAGlBxK,GAAOD,QAAU,WACf,KAAM4D,OAAM,+DAMZ,SAAS3D,EAAQD,EAASM,GAe9B,QAASye,GAAQ7Y,GACf,MAAIA,GAAY0lD,EAAM1lD,GAAtB,OAWF,QAAS0lD,GAAM1lD,GACb,IAAK,GAAI4D,KAAOiV,GAAQ9J,UACtB/O,EAAI4D,GAAOiV,EAAQ9J,UAAUnL,EAE/B,OAAO5D,GAxBTjG,EAAOD,QAAU+e,EAoCjBA,EAAQ9J,UAAUI,GAClB0J,EAAQ9J,UAAUlL,iBAAmB,SAASW,EAAOwQ,GAInD,MAHA9a,MAAKyrD,WAAazrD,KAAKyrD,gBACtBzrD,KAAKyrD,WAAWnhD,GAAStK,KAAKyrD,WAAWnhD,QACvC9C,KAAKsT,GACD9a,MAaT2e,EAAQ9J,UAAUkqC,KAAO,SAASz0C,EAAOwQ,GAIvC,QAAS7F,KACPy2C,EAAKt2C,IAAI9K,EAAO2K,GAChB6F,EAAGpB,MAAM1Z,KAAMyG,WALjB,GAAIilD,GAAO1rD,IAUX,OATAA,MAAKyrD,WAAazrD,KAAKyrD,eAOvBx2C,EAAG6F,GAAKA,EACR9a,KAAKiV,GAAG3K,EAAO2K,GACRjV,MAaT2e,EAAQ9J,UAAUO,IAClBuJ,EAAQ9J,UAAU82C,eAClBhtC,EAAQ9J,UAAU+2C,mBAClBjtC,EAAQ9J,UAAU1K,oBAAsB,SAASG,EAAOwQ,GAItD,GAHA9a,KAAKyrD,WAAazrD,KAAKyrD,eAGnB,GAAKhlD,UAAUC,OAEjB,MADA1G,MAAKyrD,cACEzrD,IAIT,IAAI6rD,GAAY7rD,KAAKyrD,WAAWnhD,EAChC,KAAKuhD,EAAW,MAAO7rD,KAGvB,IAAI,GAAKyG,UAAUC,OAEjB,aADO1G,MAAKyrD,WAAWnhD,GAChBtK,IAKT,KAAK,GADD8rD,GACKtlD,EAAI,EAAGA,EAAIqlD,EAAUnlD,OAAQF,IAEpC,GADAslD,EAAKD,EAAUrlD,GACXslD,IAAOhxC,GAAMgxC,EAAGhxC,KAAOA,EAAI,CAC7B+wC,EAAUziD,OAAO5C,EAAG,EACpB,OAGJ,MAAOxG,OAWT2e,EAAQ9J,UAAUoa,KAAO,SAAS3kB,GAChCtK,KAAKyrD,WAAazrD,KAAKyrD,cACvB,IAAI50C,MAAUpK,MAAMlM,KAAKkG,UAAW,GAChColD,EAAY7rD,KAAKyrD,WAAWnhD,EAEhC,IAAIuhD,EAAW,CACbA,EAAYA,EAAUp/C,MAAM,EAC5B,KAAK,GAAIjG,GAAI,EAAGkB,EAAMmkD,EAAUnlD,OAAYgB,EAAJlB,IAAWA,EACjDqlD,EAAUrlD,GAAGkT,MAAM1Z,KAAM6W,GAI7B,MAAO7W,OAWT2e,EAAQ9J,UAAUk3C,UAAY,SAASzhD,GAErC,MADAtK,MAAKyrD,WAAazrD,KAAKyrD,eAChBzrD,KAAKyrD,WAAWnhD,QAWzBqU,EAAQ9J,UAAUm3C,aAAe,SAAS1hD,GACxC,QAAUtK,KAAK+rD,UAAUzhD,GAAO5D,SAM9B,SAAS7G,EAAQD,EAASM,GAwB9B,QAASw3B,MApBT,GAAI/Y,GAAUze,EAAoB,IAC9ByD,EAASzD,EAAoB,IAC7B+rD,EAAa/rD,EAAoB,IACjCS,EAAOT,EAAoB,GAK3B+C,GAJU/C,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IAClBA,EAAoB,IACnBA,EAAoB,KAC/ByiD,EAAYziD,EAAoB,IAChCyB,EAAWzB,EAAoB,IAC/BuC,EAAavC,EAAoB,GAYrCye,GAAQ+Y,EAAK7iB,WASb6iB,EAAK7iB,UAAUihB,QAAU,SAAU3a,GAoHjC,QAASqkC,GAAal1C,GAChBuL,EAAGquC,YACLruC,EAAGoZ,KAAK,aAAc3kB,GArH1BtK,KAAKmxB,OAELnxB,KAAKmxB,IAAIzxB,KAAOiT,SAASM,cAAc,OACvCjT,KAAKmxB,IAAI5jB,WAAaoF,SAASM,cAAc,OAC7CjT,KAAKmxB,IAAIsZ,mBAAqB93B,SAASM,cAAc,OACrDjT,KAAKmxB,IAAIuc,qBAAuB/6B,SAASM,cAAc,OACvDjT,KAAKmxB,IAAI+H,gBAAkBvmB,SAASM,cAAc,OAClDjT,KAAKmxB,IAAI+6B,cAAgBv5C,SAASM,cAAc,OAChDjT,KAAKmxB,IAAIg7B,eAAiBx5C,SAASM,cAAc,OACjDjT,KAAKmxB,IAAI5D,OAAS5a,SAASM,cAAc,OACzCjT,KAAKmxB,IAAIzoB,KAAOiK,SAASM,cAAc,OACvCjT,KAAKmxB,IAAItI,MAAQlW,SAASM,cAAc,OACxCjT,KAAKmxB,IAAIvoB,IAAM+J,SAASM,cAAc,OACtCjT,KAAKmxB,IAAInM,OAASrS,SAASM,cAAc,OACzCjT,KAAKmxB,IAAIi7B,UAAYz5C,SAASM,cAAc,OAC5CjT,KAAKmxB,IAAIk7B,aAAe15C,SAASM,cAAc,OAC/CjT,KAAKmxB,IAAIm7B,cAAgB35C,SAASM,cAAc,OAChDjT,KAAKmxB,IAAIo7B,iBAAmB55C,SAASM,cAAc,OACnDjT,KAAKmxB,IAAIq7B,eAAiB75C,SAASM,cAAc,OACjDjT,KAAKmxB,IAAIs7B,kBAAoB95C,SAASM,cAAc,OAEpDjT,KAAKmxB,IAAIzxB,KAAKoJ,UAAY,eAC1B9I,KAAKmxB,IAAI5jB,WAAWzE,UAAY,2BAChC9I,KAAKmxB,IAAIsZ,mBAAmB3hC,UAAY,wCACxC9I,KAAKmxB,IAAIuc,qBAAqB5kC,UAAY,0CAC1C9I,KAAKmxB,IAAI+H,gBAAgBpwB,UAAY,uBACrC9I,KAAKmxB,IAAI+6B,cAAcpjD,UAAY,qBACnC9I,KAAKmxB,IAAIg7B,eAAerjD,UAAY,sBACpC9I,KAAKmxB,IAAIvoB,IAAIE,UAAY,oBACzB9I,KAAKmxB,IAAInM,OAAOlc,UAAY,uBAC5B9I,KAAKmxB,IAAIzoB,KAAKI,UAAY,cAC1B9I,KAAKmxB,IAAI5D,OAAOzkB,UAAY,cAC5B9I,KAAKmxB,IAAItI,MAAM/f,UAAY,cAC3B9I,KAAKmxB,IAAIi7B,UAAUtjD,UAAY,qBAC/B9I,KAAKmxB,IAAIk7B,aAAavjD,UAAY,wBAClC9I,KAAKmxB,IAAIm7B,cAAcxjD,UAAY,qBACnC9I,KAAKmxB,IAAIo7B,iBAAiBzjD,UAAY,wBACtC9I,KAAKmxB,IAAIq7B,eAAe1jD,UAAY,qBACpC9I,KAAKmxB,IAAIs7B,kBAAkB3jD,UAAY,wBAEvC9I,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAI5jB,YACnCvN,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAIsZ,oBACnCzqC,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAIuc,sBACnC1tC,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAI+H,iBACnCl5B,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAI+6B,eACnClsD,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAIg7B,gBACnCnsD,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAIvoB,KACnC5I,KAAKmxB,IAAIzxB,KAAKmT,YAAY7S,KAAKmxB,IAAInM,QAEnChlB,KAAKmxB,IAAI+H,gBAAgBrmB,YAAY7S,KAAKmxB,IAAI5D,QAC9CvtB,KAAKmxB,IAAI+6B,cAAcr5C,YAAY7S,KAAKmxB,IAAIzoB,MAC5C1I,KAAKmxB,IAAIg7B,eAAet5C,YAAY7S,KAAKmxB,IAAItI,OAE7C7oB,KAAKmxB,IAAI+H,gBAAgBrmB,YAAY7S,KAAKmxB,IAAIi7B,WAC9CpsD,KAAKmxB,IAAI+H,gBAAgBrmB,YAAY7S,KAAKmxB,IAAIk7B,cAC9CrsD,KAAKmxB,IAAI+6B,cAAcr5C,YAAY7S,KAAKmxB,IAAIm7B,eAC5CtsD,KAAKmxB,IAAI+6B,cAAcr5C,YAAY7S,KAAKmxB,IAAIo7B,kBAC5CvsD,KAAKmxB,IAAIg7B,eAAet5C,YAAY7S,KAAKmxB,IAAIq7B,gBAC7CxsD,KAAKmxB,IAAIg7B,eAAet5C,YAAY7S,KAAKmxB,IAAIs7B,mBAE7CzsD,KAAKiV,GAAG,cAAejV,KAAKojB,OAAO8S,KAAKl2B,OACxCA,KAAKiV,GAAG,QAASjV,KAAK2gC,SAASzK,KAAKl2B,OACpCA,KAAKiV,GAAG,WAAYjV,KAAKugC,aAAarK,KAAKl2B,OAC3CA,KAAKiV,GAAG,MAAOjV,KAAKwgC,QAAQtK,KAAKl2B,MAEjC,IAAI6V,GAAK7V,IACTA,MAAKiV,GAAG,SAAU,SAAUy3C,GACtBA,GAAkC,GAApBA,EAAW53C,MAEtBe,EAAG82C,eACN92C,EAAG82C,aAAezxC,WAAW,WAC3BrF,EAAG82C,aAAe,KAClB92C,EAAG4hB,WACF,IAIL5hB,EAAG4hB,YAMPz3B,KAAK0D,OAAS,GAAIC,GAAO3D,KAAKmxB,IAAIzxB,MAClCM,KAAK0D,OAAOkT,IAAI,SAASg2C,KAAMrnB,QAAQ,IACvCvlC,KAAK+rD,YAEL,IAAIc,IAAU,MAAO,YAAa,QAAS,QAAS,MAAO,WAAY,UAAW,SA2DlF,IApDAA,EAAOxjD,QAAQ,SAAUzB,GACvB,GAAIkC,GAAW,SAAkBQ,GAC3BuL,EAAGquC,YACLruC,EAAGoZ,KAAKrnB,EAAM0C,GAGlBuL,GAAGnS,OAAOuR,GAAGrN,EAAMkC,GACnB+L,EAAGk2C,UAAUnkD,GAAQkC,IAIvBmiD,EAAW/M,QAAQl/C,KAAK0D,OAAQ,SAAW4G,GACzC+wB,QAAQtG,IAAI,QAASzqB,GACrBuL,EAAGoZ,KAAK,QAAS3kB,IAChB4rB,KAAKl2B,OAGRisD,EAAWtM,UAAU3/C,KAAK0D,OAAQ,SAAW4G,GAC3CuL,EAAGoZ,KAAK,UAAW3kB,IAClB4rB,KAAKl2B,OAORA,KAAKmxB,IAAIzxB,KAAKiK,iBAAiB,aAAc61C,GAC7Cx/C,KAAKmxB,IAAIzxB,KAAKiK,iBAAiB,iBAAkB61C,GAGjDx/C,KAAK8G,OACHpH,QACA6N,cACA2rB,mBACAgzB,iBACAC,kBACA5+B,UACA7kB,QACAmgB,SACAjgB,OACAoc,UACAxX,UACAu/B,UAAW,EACX+f,aAAc,GAIhB9sD,KAAKqgC,SAELrgC,KAAK+sD,YAAc,GAGd5xC,EAAW,KAAM,IAAI3X,OAAM,wBAChC2X,GAAUtI,YAAY7S,KAAKmxB,IAAIzxB,OA4BjCg4B,EAAK7iB,UAAUD,WAAa,SAAU9E,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,aAAc,iBAAkB,cAWzH,IAVA5O,EAAKkG,gBAAgB0I,EAAQvP,KAAK8P,QAASA,GAEvC,eAAiBA,KACgB,gBAAxBA,GAAQ6lB,YACjB31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YACK,gBAAxB7lB,GAAQ6lB,aAA4B,QAAU7lB,GAAQ6lB,cACtE31B,KAAK8P,QAAQ6lB,YAAc7lB,EAAQ6lB,YAAYwN,OAIlB,SAA7BnjC,KAAK8P,QAAQ6lB,aACf,IAAK31B,KAAK+2B,UAAW,CACnB,GAAIA,GAAY/2B,KAAK+2B,UAAY,GAAI9zB,GAASjD,KAAK+1B,KACnDgB,GAAUniB,WAAa,SAAU9E,GAC/B,GAAIuE,GAAWvE,EAAUnP,EAAKiG,UAAWkJ,KACzCuE,GAASshB,YAAc,MACvB1yB,EAAS4R,UAAUD,WAAWrU,KAAKw2B,EAAW1iB,IAEhDrU,KAAKgC,WAAWwF,KAAKuvB,QAGvB,IAAI/2B,KAAK+2B,UAAW,CAClB,GAAI5tB,GAAQnJ,KAAKgC,WAAWuF,QAAQvH,KAAK+2B,UAC3B,MAAV5tB,GACFnJ,KAAKgC,WAAWoH,OAAOD,EAAO,GAEhCnJ,KAAK+2B,UAAU/hB,UACfhV,KAAK+2B,UAAY,KAIjB,eAAiB/2B,MAAK8P,SACxBnO,EAASy4B,qBAAqBp6B,KAAK+1B,KAAM/1B,KAAK8P,QAAQqmB,aAGpD,cAAgBrmB,KACdA,EAAQyuC,WACLv+C,KAAKkjD,YACRljD,KAAKkjD,UAAY,GAAIP,GAAU3iD,KAAKmxB,IAAIzxB,OAGtCM,KAAKkjD,YACPljD,KAAKkjD,UAAUluC,gBACRhV,MAAKkjD,YAMlBljD,KAAKgtD,kBAIPhtD,KAAKgC,WAAWqH,QAAQ,SAAU4jD,GAChC,MAAOA,GAAUr4C,WAAW9E,KAI9B9P,KAAKy3B,WAOPC,EAAK7iB,UAAUqvC,SAAW,WACxB,OAAQlkD,KAAKkjD,WAAaljD,KAAKkjD,UAAUiB,QAM3CzsB,EAAK7iB,UAAUG,QAAU,WAEvBhV,KAAKoY,QAGLpY,KAAKoV,MAGLpV,KAAKktD,kBAGDltD,KAAKmxB,IAAIzxB,KAAKmL,YAChB7K,KAAKmxB,IAAIzxB,KAAKmL,WAAW1G,YAAYnE,KAAKmxB,IAAIzxB,MAEhDM,KAAKmxB,IAAM,KAGPnxB,KAAKkjD,YACPljD,KAAKkjD,UAAUluC,gBACRhV,MAAKkjD,UAId,KAAK,GAAI54C,KAAStK,MAAK+rD,UACjB/rD,KAAK+rD,UAAU/lD,eAAesE,UACzBtK,MAAK+rD,UAAUzhD,EAG1BtK,MAAK+rD,UAAY,KACjB/rD,KAAK0D,OAAS,KAGd1D,KAAKgC,WAAWqH,QAAQ,SAAU4jD,GAChC,MAAOA,GAAUj4C,YAGnBhV,KAAK+1B,KAAO,MAQd2B,EAAK7iB,UAAUu2B,cAAgB,SAAUhS,EAAM/4B,GAC7C,IAAKL,KAAKi3B,WACR,KAAM,IAAIzzB,OAAM,yDAGlB,IAAI2pD,GAAQ9sD,GAAM,CAElBL,MAAKgC,WAAWqH,QAAQ,SAAUO,EAAST,EAAOnH,GAC5C4H,YAAmBnH,IAAcmH,EAAQkG,QAAQzP,KAAO8sD,GAC1DvjD,EAAQwhC,cAAchS,MAU5B1B,EAAK7iB,UAAUw2B,cAAgB,SAAUhrC,GACvC,IAAKL,KAAKi3B,WACR,KAAM,IAAIzzB,OAAM,yDAGlB,IAAI2pD,GAAQ9sD,GAAM,EACd42B,EAAaj3B,KAAKi3B,WAAWoU,eAQjC,OANArrC,MAAKgC,WAAWqH,QAAQ,SAAUO,EAAST,EAAOnH,GAC5C4H,YAAmBnH,IAAcmH,EAAQkG,QAAQzP,KAAO8sD,IAC1Dl2B,EAAartB,EAAQyhC,mBAIlBpU,GAUTS,EAAK7iB,UAAUu4C,cAAgB,SAAUh0B,EAAM/4B,GAC7C,IAAKL,KAAKg3B,YACR,KAAM,IAAIxzB,OAAM,sCAGlB,IAAa4C,SAATgzB,EACF,KAAM,IAAI51B,OAAM,qDAGlB,IACI6pD,GACAp2B,EACAq2B,EAHAC,EAAK5sD,EAAKgH,QAAQyxB,EAAM,QAAQtxB,SA0CpC,OAnCK9H,MAAKwtD,cAAgBxtD,KAAKwtD,aAAarmD,cAAgBJ,QAC1D/G,KAAKwtD,cAAgB,IAIZpnD,SAAP/F,GAEFgtD,EAASrtD,KAAKwtD,aAAan4C,OAAO,SAAUzL,GAC1C,MAAOjJ,GAAKiD,SAASgG,KAGvB0jD,EAAcD,EAAO3mD,OAAS,EAAIhC,KAAKJ,IAAIoV,MAAM,KAAM2zC,GAAU,EAAI,IAIrErtD,KAAKwtD,aAAankD,QAAQ,SAAUO,GAClC,GAAIA,IAAYvJ,EACd,KAAM,IAAImD,OAAM,mCAIpB8pD,EAAcjtD,GAGhBL,KAAKwtD,aAAahmD,KAAK8lD,GAEvBr2B,EAAa,GAAIx0B,GAAWzC,KAAK+1B,MAC/BkV,gBAAgB,EAChB7R,KAAMm0B,EACNltD,GAAIitD,IAGNttD,KAAKgC,WAAWwF,KAAKyvB,GACrBj3B,KAAKojB,SAEEkqC,GAQT51B,EAAK7iB,UAAU44C,iBAAmB,SAAUptD,GAE1C,GAAIwV,GAAK7V,IAETA,MAAKgC,WAAWqH,QAAQ,SAAU4pB,EAAK9pB,EAAOnH,GACxCixB,YAAexwB,IAAcwwB,EAAInjB,QAAQzP,KAAOA,GAE3B,IAAnB4yB,EAAInjB,QAAQzP,KACdwV,EAAG23C,aAAapkD,OAAOyM,EAAG23C,aAAajmD,QAAQlH,GAAK,GACpD2B,EAAWoH,OAAOD,EAAO,GACzB8pB,EAAIje,cAUZ0iB,EAAK7iB,UAAU8gC,gBAAkB,WAC/B,MAAO31C,MAAKk3B,SAAWl3B,KAAKk3B,QAAQye,uBAatCje,EAAK7iB,UAAUuD,MAAQ,SAAUkhB,KAE1BA,GAAQA,EAAKr3B,QAChBjC,KAAKw3B,SAAS,QAIX8B,GAAQA,EAAK/D,SAChBv1B,KAAKu3B,UAAU,QAIZ+B,GAAQA,EAAKxpB,WAChB9P,KAAKgC,WAAWqH,QAAQ,SAAU4jD,GAChC,MAAOA,GAAUr4C,WAAWq4C,EAAUx3B,kBAGxCz1B,KAAK4U,WAAW5U,KAAKy1B,kBAazBiC,EAAK7iB,UAAUsjB,IAAM,SAAUroB,GAC7B,GAAIgnB,GAAQ92B,KAAKg4B,eAGjB,IAAoB,OAAhBlB,EAAM7lB,OAAgC,OAAd6lB,EAAM5lB,IAAlC,CAIA,GAAIgnB,GAAUpoB,GAA+B1J,SAApB0J,EAAQooB,QAAwBpoB,EAAQooB,SAAU,CAC3El4B,MAAK82B,MAAMnC,SAASmC,EAAM7lB,MAAO6lB,EAAM5lB,IAAKgnB,KAQ9CR,EAAK7iB,UAAUmjB,cAAgB,WAE7B,GAAID,GAAY/3B,KAAKw4B,eAGjBvnB,EAAQ8mB,EAAU1zB,IAClB6M,EAAM6mB,EAAUzzB,GACpB,IAAa,MAAT2M,GAAwB,MAAPC,EAAa,CAChC,GAAI0iB,GAAW1iB,EAAIpJ,UAAYmJ,EAAMnJ,SACrB,IAAZ8rB,IAEFA,EAAW,OAEb3iB,EAAQ,GAAInM,MAAKmM,EAAMnJ,UAAuB,IAAX8rB,GACnC1iB,EAAM,GAAIpM,MAAKoM,EAAIpJ,UAAuB,IAAX8rB,GAGjC,OACE3iB,MAAOA,EACPC,IAAKA,IAwBTwmB,EAAK7iB,UAAUojB,UAAY,SAAUhnB,EAAOC,EAAKpB,GAC/C,GAAIooB,EACJ,IAAwB,GAApBzxB,UAAUC,OAAa,CACzB,GAAIowB,GAAQrwB,UAAU,EACtByxB,GAA4B9xB,SAAlB0wB,EAAMoB,QAAwBpB,EAAMoB,SAAU,EACxDl4B,KAAK82B,MAAMnC,SAASmC,EAAM7lB,MAAO6lB,EAAM5lB,IAAKgnB,OAE5CA,GAAUpoB,GAA+B1J,SAApB0J,EAAQooB,QAAwBpoB,EAAQooB,SAAU,EACvEl4B,KAAK82B,MAAMnC,SAAS1jB,EAAOC,EAAKgnB,IAcpCR,EAAK7iB,UAAUwU,OAAS,SAAU+P,EAAMtpB,GACtC,GAAI8jB,GAAW5zB,KAAK82B,MAAM5lB,IAAMlR,KAAK82B,MAAM7lB,MACvChC,EAAItO,EAAKgH,QAAQyxB,EAAM,QAAQtxB,UAE/BmJ,EAAQhC,EAAI2kB,EAAW,EACvB1iB,EAAMjC,EAAI2kB,EAAW,EACrBsE,EAAUpoB,GAA+B1J,SAApB0J,EAAQooB,QAAwBpoB,EAAQooB,SAAU,CAE3El4B,MAAK82B,MAAMnC,SAAS1jB,EAAOC,EAAKgnB,IAOlCR,EAAK7iB,UAAU64C,UAAY,WACzB,GAAI52B,GAAQ92B,KAAK82B,MAAM6K,UACvB,QACE1wB,MAAO,GAAInM,MAAKgyB,EAAM7lB,OACtBC,IAAK,GAAIpM,MAAKgyB,EAAM5lB,OAOxBwmB,EAAK7iB,UAAUuO,OAAS,WACtBpjB,KAAKy3B,WAQPC,EAAK7iB,UAAU4iB,QAAU,WACvB,GAAI2S,IAAU,EACVt6B,EAAU9P,KAAK8P,QACfhJ,EAAQ9G,KAAK8G,MACbqqB,EAAMnxB,KAAKmxB,GAEf,IAAKA,EAAL,CAEAxvB,EAAS44B,kBAAkBv6B,KAAK+1B,KAAM/1B,KAAK8P,QAAQqmB,aAGxB,OAAvBrmB,EAAQ6lB,aACVh1B,EAAKkI,aAAasoB,EAAIzxB,KAAM,WAC5BiB,EAAKuI,gBAAgBioB,EAAIzxB,KAAM,gBAE/BiB,EAAKuI,gBAAgBioB,EAAIzxB,KAAM,WAC/BiB,EAAKkI,aAAasoB,EAAIzxB,KAAM,eAI9ByxB,EAAIzxB,KAAK0O,MAAMwnB,UAAYj1B,EAAKsK,OAAOK,OAAOwE,EAAQ8lB,UAAW,IACjEzE,EAAIzxB,KAAK0O,MAAMynB,UAAYl1B,EAAKsK,OAAOK,OAAOwE,EAAQ+lB,UAAW,IACjE1E,EAAIzxB,KAAK0O,MAAM6F,MAAQtT,EAAKsK,OAAOK,OAAOwE,EAAQmE,MAAO,IAGzDnN,EAAM0G,OAAO9E,MAAQyoB,EAAI+H,gBAAgB1H,YAAcL,EAAI+H,gBAAgB/X,aAAe,EAC1Fra,EAAM0G,OAAOqb,MAAQ/hB,EAAM0G,OAAO9E,KAClC5B,EAAM0G,OAAO5E,KAAOuoB,EAAI+H,gBAAgBxH,aAAeP,EAAI+H,gBAAgB7S,cAAgB,EAC3Fvf,EAAM0G,OAAOwX,OAASle,EAAM0G,OAAO5E,GACnC,IAAI+kD,GAAmBx8B,EAAIzxB,KAAKgyB,aAAeP,EAAIzxB,KAAK2mB,aACpDunC,EAAkBz8B,EAAIzxB,KAAK8xB,YAAcL,EAAIzxB,KAAKyhB,WAIb,KAArCgQ,EAAI+H,gBAAgB7S,eACtBvf,EAAM0G,OAAO9E,KAAO5B,EAAM0G,OAAO5E,IACjC9B,EAAM0G,OAAOqb,MAAQ/hB,EAAM0G,OAAO9E,MAEN,IAA1ByoB,EAAIzxB,KAAK2mB,eACXunC,EAAkBD,GAKpB7mD,EAAMymB,OAAOrZ,OAASid,EAAI5D,OAAOmE,aACjC5qB,EAAM4B,KAAKwL,OAASid,EAAIzoB,KAAKgpB,aAC7B5qB,EAAM+hB,MAAM3U,OAASid,EAAItI,MAAM6I,aAC/B5qB,EAAM8B,IAAIsL,OAASid,EAAIvoB,IAAIyd,eAAiBvf,EAAM0G,OAAO5E,IACzD9B,EAAMke,OAAO9Q,OAASid,EAAInM,OAAOqB,eAAiBvf,EAAM0G,OAAOwX,MAM/D,IAAIyM,GAAgB/sB,KAAKJ,IAAIwC,EAAM4B,KAAKwL,OAAQpN,EAAMymB,OAAOrZ,OAAQpN,EAAM+hB,MAAM3U,QAC7E25C,EAAa/mD,EAAM8B,IAAIsL,OAASud,EAAgB3qB,EAAMke,OAAO9Q,OAASy5C,EAAmB7mD,EAAM0G,OAAO5E,IAAM9B,EAAM0G,OAAOwX,MAC7HmM,GAAIzxB,KAAK0O,MAAM8F,OAASvT,EAAKsK,OAAOK,OAAOwE,EAAQoE,OAAQ25C,EAAa,MAGxE/mD,EAAMpH,KAAKwU,OAASid,EAAIzxB,KAAKgyB,aAC7B5qB,EAAMyG,WAAW2G,OAASpN,EAAMpH,KAAKwU,OAASy5C,CAC9C,IAAI/vB,GAAkB92B,EAAMpH,KAAKwU,OAASpN,EAAM8B,IAAIsL,OAASpN,EAAMke,OAAO9Q,OAASy5C,CACnF7mD,GAAMoyB,gBAAgBhlB,OAAS0pB,EAC/B92B,EAAMolD,cAAch4C,OAAS0pB,EAC7B92B,EAAMqlD,eAAej4C,OAASpN,EAAMolD,cAAch4C,OAGlDpN,EAAMpH,KAAKuU,MAAQkd,EAAIzxB,KAAK8xB,YAC5B1qB,EAAMyG,WAAW0G,MAAQnN,EAAMpH,KAAKuU,MAAQ25C,EAC5C9mD,EAAM4B,KAAKuL,MAAQkd,EAAI+6B,cAAc/qC,cAAgBra,EAAM0G,OAAO9E,KAClE5B,EAAMolD,cAAcj4C,MAAQnN,EAAM4B,KAAKuL,MACvCnN,EAAM+hB,MAAM5U,MAAQkd,EAAIg7B,eAAehrC,cAAgBra,EAAM0G,OAAOqb,MACpE/hB,EAAMqlD,eAAel4C,MAAQnN,EAAM+hB,MAAM5U,KACzC,IAAI65C,GAAchnD,EAAMpH,KAAKuU,MAAQnN,EAAM4B,KAAKuL,MAAQnN,EAAM+hB,MAAM5U,MAAQ25C,CAC5E9mD,GAAMymB,OAAOtZ,MAAQ65C,EACrBhnD,EAAMoyB,gBAAgBjlB,MAAQ65C,EAC9BhnD,EAAM8B,IAAIqL,MAAQ65C,EAClBhnD,EAAMke,OAAO/Q,MAAQ65C,EAGrB38B,EAAI5jB,WAAWa,MAAM8F,OAASpN,EAAMyG,WAAW2G,OAAS,KACxDid,EAAIsZ,mBAAmBr8B,MAAM8F,OAASpN,EAAMyG,WAAW2G,OAAS,KAChEid,EAAIuc,qBAAqBt/B,MAAM8F,OAASpN,EAAMoyB,gBAAgBhlB,OAAS,KACvEid,EAAI+H,gBAAgB9qB,MAAM8F,OAASpN,EAAMoyB,gBAAgBhlB,OAAS,KAClEid,EAAI+6B,cAAc99C,MAAM8F,OAASpN,EAAMolD,cAAch4C,OAAS,KAC9Did,EAAIg7B,eAAe/9C,MAAM8F,OAASpN,EAAMqlD,eAAej4C,OAAS,KAEhEid,EAAI5jB,WAAWa,MAAM6F,MAAQnN,EAAMyG,WAAW0G,MAAQ,KACtDkd,EAAIsZ,mBAAmBr8B,MAAM6F,MAAQnN,EAAMoyB,gBAAgBjlB,MAAQ,KACnEkd,EAAIuc,qBAAqBt/B,MAAM6F,MAAQnN,EAAMyG,WAAW0G,MAAQ,KAChEkd,EAAI+H,gBAAgB9qB,MAAM6F,MAAQnN,EAAMymB,OAAOtZ,MAAQ,KACvDkd,EAAIvoB,IAAIwF,MAAM6F,MAAQnN,EAAM8B,IAAIqL,MAAQ,KACxCkd,EAAInM,OAAO5W,MAAM6F,MAAQnN,EAAMke,OAAO/Q,MAAQ,KAG9Ckd,EAAI5jB,WAAWa,MAAM1F,KAAO,IAC5ByoB,EAAI5jB,WAAWa,MAAMxF,IAAM,IAC3BuoB,EAAIsZ,mBAAmBr8B,MAAM1F,KAAO5B,EAAM4B,KAAKuL,MAAQnN,EAAM0G,OAAO9E,KAAO,KAC3EyoB,EAAIsZ,mBAAmBr8B,MAAMxF,IAAM,IACnCuoB,EAAIuc,qBAAqBt/B,MAAM1F,KAAO,IACtCyoB,EAAIuc,qBAAqBt/B,MAAMxF,IAAM9B,EAAM8B,IAAIsL,OAAS,KACxDid,EAAI+H,gBAAgB9qB,MAAM1F,KAAO5B,EAAM4B,KAAKuL,MAAQ,KACpDkd,EAAI+H,gBAAgB9qB,MAAMxF,IAAM9B,EAAM8B,IAAIsL,OAAS,KACnDid,EAAI+6B,cAAc99C,MAAM1F,KAAO,IAC/ByoB,EAAI+6B,cAAc99C,MAAMxF,IAAM9B,EAAM8B,IAAIsL,OAAS,KACjDid,EAAIg7B,eAAe/9C,MAAM1F,KAAO5B,EAAM4B,KAAKuL,MAAQnN,EAAMymB,OAAOtZ,MAAQ,KACxEkd,EAAIg7B,eAAe/9C,MAAMxF,IAAM9B,EAAM8B,IAAIsL,OAAS,KAClDid,EAAIvoB,IAAIwF,MAAM1F,KAAO5B,EAAM4B,KAAKuL,MAAQ,KACxCkd,EAAIvoB,IAAIwF,MAAMxF,IAAM,IACpBuoB,EAAInM,OAAO5W,MAAM1F,KAAO5B,EAAM4B,KAAKuL,MAAQ,KAC3Ckd,EAAInM,OAAO5W,MAAMxF,IAAM9B,EAAM8B,IAAIsL,OAASpN,EAAMoyB,gBAAgBhlB,OAAS,KAIzElU,KAAK+tD,kBAGL,IAAI7iC,GAASlrB,KAAK8G,MAAMimC,SACG,WAAvBj9B,EAAQ6lB,cACVzK,GAAUxmB,KAAKJ,IAAItE,KAAK8G,MAAMoyB,gBAAgBhlB,OAASlU,KAAK8G,MAAMymB,OAAOrZ,OAASlU,KAAK8G,MAAM0G,OAAO5E,IAAM5I,KAAK8G,MAAM0G,OAAOwX,OAAQ,IAEtImM,EAAI5D,OAAOnf,MAAM1F,KAAO,IACxByoB,EAAI5D,OAAOnf,MAAMxF,IAAMsiB,EAAS,KAChCiG,EAAIzoB,KAAK0F,MAAM1F,KAAO,IACtByoB,EAAIzoB,KAAK0F,MAAMxF,IAAMsiB,EAAS,KAC9BiG,EAAItI,MAAMza,MAAM1F,KAAO,IACvByoB,EAAItI,MAAMza,MAAMxF,IAAMsiB,EAAS,IAG/B,IAAI8iC,GAAwC,GAAxBhuD,KAAK8G,MAAMimC,UAAiB,SAAW,GACvDkhB,EAAmBjuD,KAAK8G,MAAMimC,WAAa/sC,KAAK8G,MAAMgmD,aAAe,SAAW,EAYpF,IAXA37B,EAAIi7B,UAAUh+C,MAAMyrB,WAAam0B,EACjC78B,EAAIk7B,aAAaj+C,MAAMyrB,WAAao0B,EACpC98B,EAAIm7B,cAAcl+C,MAAMyrB,WAAam0B,EACrC78B,EAAIo7B,iBAAiBn+C,MAAMyrB,WAAao0B,EACxC98B,EAAIq7B,eAAep+C,MAAMyrB,WAAam0B,EACtC78B,EAAIs7B,kBAAkBr+C,MAAMyrB,WAAao0B,EAGzCjuD,KAAKgC,WAAWqH,QAAQ,SAAU4jD,GAChC7iB,EAAU6iB,EAAU7pC,UAAYgnB,IAE9BA,EAAS,CAEX,GAAI8jB,GAAc,CACdluD,MAAK+sD,YAAcmB,GACrBluD,KAAK+sD,cACL/sD,KAAKy3B,WAEL4D,QAAQtG,IAAI,qCAEd/0B,KAAK+sD,YAAc,EAGrB/sD,KAAKivB,KAAK,oBAIZyI,EAAK7iB,UAAUs5C,QAAU,WACvB,KAAM,IAAI3qD,OAAM,wDAUlBk0B,EAAK7iB,UAAUk2B,eAAiB,SAAU3R,GACxC,IAAKp5B,KAAKg3B,YACR,KAAM,IAAIxzB,OAAM,sCAGlBxD,MAAKg3B,YAAY+T,eAAe3R,IAQlC1B,EAAK7iB,UAAUm2B,eAAiB,WAC9B,IAAKhrC,KAAKg3B,YACR,KAAM,IAAIxzB,OAAM,sCAGlB,OAAOxD,MAAKg3B,YAAYgU,kBAU1BtT,EAAK7iB,UAAU8hB,QAAU,SAAUxjB,GACjC,MAAOxR,GAAS+0B,OAAO12B,KAAMmT,EAAGnT,KAAK8G,MAAMymB,OAAOtZ,QAUpDyjB,EAAK7iB,UAAUgiB,cAAgB,SAAU1jB,GACvC,MAAOxR,GAAS+0B,OAAO12B,KAAMmT,EAAGnT,KAAK8G,MAAMpH,KAAKuU,QAalDyjB,EAAK7iB,UAAU0hB,UAAY,SAAU6C,GACnC,MAAOz3B,GAAS20B,SAASt2B,KAAMo5B,EAAMp5B,KAAK8G,MAAMymB,OAAOtZ,QAYzDyjB,EAAK7iB,UAAU4hB,gBAAkB,SAAU2C,GACzC,MAAOz3B,GAAS20B,SAASt2B,KAAMo5B,EAAMp5B,KAAK8G,MAAMpH,KAAKuU,QASvDyjB,EAAK7iB,UAAUm4C,gBAAkB,WACA,GAA3BhtD,KAAK8P,QAAQ4lB,WACf11B,KAAKouD,mBAELpuD,KAAKktD,mBASTx1B,EAAK7iB,UAAUu5C,iBAAmB,WAChC,GAAIv4C,GAAK7V,IAETA,MAAKktD,kBAELltD,KAAKquD,UAAY,WACf,MAA6B,IAAzBx4C,EAAG/F,QAAQ4lB,eAEb7f,GAAGq3C,uBAIDr3C,EAAGsb,IAAIzxB,OAKLmW,EAAGsb,IAAIzxB,KAAK8xB,aAAe3b,EAAG/O,MAAMovC,WAAargC,EAAGsb,IAAIzxB,KAAKgyB,cAAgB7b,EAAG/O,MAAMwnD,cACxFz4C,EAAG/O,MAAMovC,UAAYrgC,EAAGsb,IAAIzxB,KAAK8xB,YACjC3b,EAAG/O,MAAMwnD,WAAaz4C,EAAGsb,IAAIzxB,KAAKgyB,aAElC7b,EAAGoZ,KAAK,aAMdtuB,EAAKgJ,iBAAiBY,OAAQ,SAAUvK,KAAKquD,WAE7CruD,KAAKuuD,WAAaC,YAAYxuD,KAAKquD,UAAW,MAOhD32B,EAAK7iB,UAAUq4C,gBAAkB,WAC3BltD,KAAKuuD,aACP16B,cAAc7zB,KAAKuuD,YACnBvuD,KAAKuuD,WAAanoD,QAIpBzF,EAAKwJ,oBAAoBI,OAAQ,SAAUvK,KAAKquD,WAChDruD,KAAKquD,UAAY,MAQnB32B,EAAK7iB,UAAU8rB,SAAW,SAAUr2B,GAClCtK,KAAKqgC,MAAMyB,eAAgB,GAQ7BpK,EAAK7iB,UAAU+rB,SAAW,SAAUt2B,GAClCtK,KAAKqgC,MAAMyB,eAAgB,GAQ7BpK,EAAK7iB,UAAU0rB,aAAe,SAAUj2B,GACtCtK,KAAKqgC,MAAMouB,iBAAmBzuD,KAAK8G,MAAMimC,WAQ3CrV,EAAK7iB,UAAU2rB,QAAU,SAAUl2B,GAGjC,GAAKtK,KAAKqgC,MAAMyB,cAAhB,CAEA,GAAIhS,GAAQxlB,EAAM03B,OAEd0sB,EAAe1uD,KAAK2uD,gBACpBC,EAAe5uD,KAAK6uD,cAAc7uD,KAAKqgC,MAAMouB,iBAAmB3+B,EAEhE8+B,IAAgBF,IAClB1uD,KAAKy3B,UACLz3B,KAAKivB,KAAK,mBAUdyI,EAAK7iB,UAAUg6C,cAAgB,SAAU9hB,GAGvC,MAFA/sC,MAAK8G,MAAMimC,UAAYA,EACvB/sC,KAAK+tD,mBACE/tD,KAAK8G,MAAMimC,WAQpBrV,EAAK7iB,UAAUk5C,iBAAmB,WAEhC,GAAIjB,GAAepoD,KAAKL,IAAIrE,KAAK8G,MAAMoyB,gBAAgBhlB,OAASlU,KAAK8G,MAAMymB,OAAOrZ,OAAQ,EAc1F,OAbI44C,IAAgB9sD,KAAK8G,MAAMgmD,eAGG,UAA5B9sD,KAAK8P,QAAQ6lB,cACf31B,KAAK8G,MAAMimC,WAAa+f,EAAe9sD,KAAK8G,MAAMgmD,cAEpD9sD,KAAK8G,MAAMgmD,aAAeA,GAIxB9sD,KAAK8G,MAAMimC,UAAY,IAAG/sC,KAAK8G,MAAMimC,UAAY,GACjD/sC,KAAK8G,MAAMimC,UAAY+f,IAAc9sD,KAAK8G,MAAMimC,UAAY+f,GAEzD9sD,KAAK8G,MAAMimC,WAQpBrV,EAAK7iB,UAAU85C,cAAgB,WAC7B,MAAO3uD,MAAK8G,MAAMimC,WAGpBltC,EAAOD,QAAU83B,GAIb,SAAS73B,EAAQD,EAASM,GAIjBA,EAAoB,GAOjCN,GAAQs/C,QAAU,SAAUx7C,EAAQ4F,GAClCA,EAASwlD,aAAe,SAAUxkD,GAC5BA,EAAM+qC,UAAY0Z,IACpBzlD,EAASgB,GAETykD,GAAa,EACb7zC,WAAW,WACT6zC,GAAa,GACZ,KAIPrrD,EAAOuR,GAAG,eAAgB3L,EAASwlD,cAKrC,IAAIC,IAAa,CAOjBnvD,GAAQ+/C,UAAY,SAAUj8C,EAAQ4F,GAYpC,MAXAA,GAASwlD,aAAe,SAAUxkD,GAC5BA,EAAM0kD,UAAYC,IACpB3lD,EAASgB,GAET2kD,GAAc,EACd/zC,WAAW,WACT+zC,GAAc,GACb,KAIAvrD,EAAOuR,GAAG,eAAgB3L,EAASwlD,cAK5C,IAAIG,IAAc,CAOlBrvD,GAAQsvD,SAAW,SAAUxrD,EAAQ4F,GACnC5F,EAAO0R,IAAI,eAAgB9L,EAASwlD,eAQtClvD,EAAQuvD,WAAavvD,EAAQsvD,UAIzB,SAASrvD,EAAQD,EAASM,GAK9BN,EAAQ+qC,IACNpO,QAAS,UACTnD,KAAM,QAERx5B,EAAQwvD,MAAQxvD,EAAQ+qC,GACxB/qC,EAAQyvD,MAAQzvD,EAAQ+qC,GAGxB/qC,EAAQ0vD,IACN/yB,QAAS,aACTnD,KAAM,QAERx5B,EAAQ2vD,MAAQ3vD,EAAQ0vD,GACxB1vD,EAAQ4vD,MAAQ5vD,EAAQ0vD,IAIpB,SAASzvD,EAAQD,EAASM,GAO9B,QAASiwC,GAAK1W,EAAS3pB,GACrB9P,KAAKy5B,QAAUA,EACfz5B,KAAK8P,QAAUA,EALjB,GAAIlP,GAAUV,EAAoB,GAC9BmwC,EAASnwC,EAAoB,GAOjCiwC,GAAKt7B,UAAUw8B,UAAY,SAAUC,GAGnC,IAAK,GAFD9zB,GAAO8zB,EAAU,GAAGl+B,EACpBsK,EAAO4zB,EAAU,GAAGl+B,EACf6Z,EAAI,EAAGA,EAAIqkB,EAAU5qC,OAAQumB,IACpCzP,EAAOA,EAAO8zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIoK,EAChDE,EAAOA,EAAO4zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIsK,CAElD,QAASrZ,IAAKmZ,EAAMlZ,IAAKoZ,EAAM0zB,iBAAkBpxC,KAAK8P,QAAQshC,mBAShEjB,EAAKt7B,UAAU08B,KAAO,SAAU9Y,EAASplB,EAAOm+B,GAC9C,GAAe,MAAX/Y,GACEA,EAAQ/xB,OAAS,EAAG,CACtB,GAAIiqC,GAAM7iC,EACN+uC,EAAY/4C,OAAO0tC,EAAUlG,IAAIl9B,MAAM8F,OAAOvI,QAAQ,KAAM,IAehE,IAdAglC,EAAO/vC,EAAQ4R,cAAc,OAAQg/B,EAAU7E,YAAa6E,EAAUlG,KACtEqF,EAAKl9B,eAAe,KAAM,QAASJ,EAAMvK,WACrB1C,SAAhBiN,EAAMjF,OACRuiC,EAAKl9B,eAAe,KAAM,QAAS,OAASJ,EAAMjF;AAKlDN,EADsC,GAApCuF,EAAMvD,QAAQygC,WAAWxgC,QACvBogC,EAAKsf,YAAYh3B,EAASplB,GAE1B88B,EAAKuf,QAAQj3B,GAIiB,GAAhCplB,EAAMvD,QAAQihC,OAAOhhC,QAAiB,CACxC,GACI4/C,GADA/e,EAAWhwC,EAAQ4R,cAAc,OAAQg/B,EAAU7E,YAAa6E,EAAUlG,IAG5EqkB,GADsC,OAApCt8C,EAAMvD,QAAQihC,OAAOpb,YACf,IAAM8C,EAAQ,GAAGtlB,EAAI,MAAgBrF,EAAI,IAAM2qB,EAAQA,EAAQ/xB,OAAS,GAAGyM,EAAI,KAE/E,IAAMslB,EAAQ,GAAGtlB,EAAI,IAAM0pC,EAAY,IAAM/uC,EAAI,IAAM2qB,EAAQA,EAAQ/xB,OAAS,GAAGyM,EAAI,IAAM0pC,EAEvGjM,EAASn9B,eAAe,KAAM,QAASJ,EAAMvK,UAAY,aACtB1C,SAA/BiN,EAAMvD,QAAQihC,OAAO3iC,OACvBwiC,EAASn9B,eAAe,KAAM,QAASJ,EAAMvD,QAAQihC,OAAO3iC,OAE9DwiC,EAASn9B,eAAe,KAAM,IAAKk8C,GAGrChf,EAAKl9B,eAAe,KAAM,IAAK,IAAM3F,GAGG,GAApCuF,EAAMvD,QAAQ0D,WAAWzD,SAC3BsgC,EAAOkB,KAAK9Y,EAASplB,EAAOm+B,KAapCrB,EAAKyf,mBAAqB,SAAUx7C,GAMlC,IAAK,GAJDy7C,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrBpiD,EAAIpJ,KAAKqqB,MAAM3a,EAAK,GAAGjB,GAAK,IAAMzO,KAAKqqB,MAAM3a,EAAK,GAAGhB,GAAK,IAC1D+8C,EAAgB,EAAI,EACpBzpD,EAAS0N,EAAK1N,OACTF,EAAI,EAAOE,EAAS,EAAbF,EAAgBA,IAE9BqpD,EAAU,GAALrpD,EAAS4N,EAAK,GAAKA,EAAK5N,EAAI,GACjCspD,EAAK17C,EAAK5N,GACVupD,EAAK37C,EAAK5N,EAAI,GACdwpD,EAAatpD,EAARF,EAAI,EAAa4N,EAAK5N,EAAI,GAAKupD,EASpCE,GAAQ98C,IAAK08C,EAAG18C,EAAI,EAAI28C,EAAG38C,EAAI48C,EAAG58C,GAAKg9C,EAAe/8C,IAAKy8C,EAAGz8C,EAAI,EAAI08C,EAAG18C,EAAI28C,EAAG38C,GAAK+8C,GACrFD,GAAQ/8C,GAAI28C,EAAG38C,EAAI,EAAI48C,EAAG58C,EAAI68C,EAAG78C,GAAKg9C,EAAe/8C,GAAI08C,EAAG18C,EAAI,EAAI28C,EAAG38C,EAAI48C,EAAG58C,GAAK+8C,GAGnFriD,GAAK,IAAMmiD,EAAI98C,EAAI,IAAM88C,EAAI78C,EAAI,IAAM88C,EAAI/8C,EAAI,IAAM+8C,EAAI98C,EAAI,IAAM28C,EAAG58C,EAAI,IAAM48C,EAAG38C,EAAI,GAGzF,OAAOtF,IAcTqiC,EAAKsf,YAAc,SAAUr7C,EAAMf,GACjC,GAAIo9B,GAAQp9B,EAAMvD,QAAQygC,WAAWE,KACrC,IAAa,GAATA,GAAwBrqC,SAAVqqC,EAChB,MAAOzwC,MAAK4vD,mBAAmBx7C,EAM/B,KAAK,GAJDy7C,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAIC,EAAIC,EAAIC,EAAGzkC,EAAG0kC,EAAGC,EAC/CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3CjjD,EAAIpJ,KAAKqqB,MAAM3a,EAAK,GAAGjB,GAAK,IAAMzO,KAAKqqB,MAAM3a,EAAK,GAAGhB,GAAK,IAC1D1M,EAAS0N,EAAK1N,OACTF,EAAI,EAAOE,EAAS,EAAbF,EAAgBA,IAE9BqpD,EAAU,GAALrpD,EAAS4N,EAAK,GAAKA,EAAK5N,EAAI,GACjCspD,EAAK17C,EAAK5N,GACVupD,EAAK37C,EAAK5N,EAAI,GACdwpD,EAAatpD,EAARF,EAAI,EAAa4N,EAAK5N,EAAI,GAAKupD,EAEpCK,EAAK1rD,KAAKssB,KAAKtsB,KAAKwwB,IAAI26B,EAAG18C,EAAI28C,EAAG38C,EAAG,GAAKzO,KAAKwwB,IAAI26B,EAAGz8C,EAAI08C,EAAG18C,EAAG,IAChEi9C,EAAK3rD,KAAKssB,KAAKtsB,KAAKwwB,IAAI46B,EAAG38C,EAAI48C,EAAG58C,EAAG,GAAKzO,KAAKwwB,IAAI46B,EAAG18C,EAAI28C,EAAG38C,EAAG,IAChEk9C,EAAK5rD,KAAKssB,KAAKtsB,KAAKwwB,IAAI66B,EAAG58C,EAAI68C,EAAG78C,EAAG,GAAKzO,KAAKwwB,IAAI66B,EAAG38C,EAAI48C,EAAG58C,EAAG,IAYhEs9C,EAAShsD,KAAKwwB,IAAIo7B,EAAI7f,GACtBmgB,EAAUlsD,KAAKwwB,IAAIo7B,EAAI,EAAI7f,GAC3BkgB,EAASjsD,KAAKwwB,IAAIm7B,EAAI5f,GACtBogB,EAAUnsD,KAAKwwB,IAAIm7B,EAAI,EAAI5f,GAC3BsgB,EAASrsD,KAAKwwB,IAAIk7B,EAAI3f,GACtBqgB,EAAUpsD,KAAKwwB,IAAIk7B,EAAI,EAAI3f,GAE3B8f,EAAI,EAAIO,EAAU,EAAIC,EAASJ,EAASE,EACxC/kC,EAAI,EAAI8kC,EAAU,EAAIF,EAASC,EAASE,EACxCL,EAAI,EAAIO,GAAUA,EAASJ,GACvBH,EAAI,IACNA,EAAI,EAAIA,GAEVC,EAAI,EAAIC,GAAUA,EAASC,GACvBF,EAAI,IACNA,EAAI,EAAIA,GAGVR,GAAQ98C,IAAK09C,EAAUhB,EAAG18C,EAAIo9C,EAAIT,EAAG38C,EAAI29C,EAAUf,EAAG58C,GAAKq9C,EACzDp9C,IAAKy9C,EAAUhB,EAAGz8C,EAAIm9C,EAAIT,EAAG18C,EAAI09C,EAAUf,EAAG38C,GAAKo9C,GAErDN,GAAQ/8C,GAAIy9C,EAAUd,EAAG38C,EAAI2Y,EAAIikC,EAAG58C,EAAI09C,EAAUb,EAAG78C,GAAKs9C,EACxDr9C,GAAIw9C,EAAUd,EAAG18C,EAAI0Y,EAAIikC,EAAG38C,EAAIy9C,EAAUb,EAAG58C,GAAKq9C,GAEvC,GAATR,EAAI98C,GAAmB,GAAT88C,EAAI78C,IACpB68C,EAAMH,GAEK,GAATI,EAAI/8C,GAAmB,GAAT+8C,EAAI98C,IACpB88C,EAAMH,GAERjiD,GAAK,IAAMmiD,EAAI98C,EAAI,IAAM88C,EAAI78C,EAAI,IAAM88C,EAAI/8C,EAAI,IAAM+8C,EAAI98C,EAAI,IAAM28C,EAAG58C,EAAI,IAAM48C,EAAG38C,EAAI,GAGzF,OAAOtF,IAUXqiC,EAAKuf,QAAU,SAAUt7C,GAGvB,IAAK,GADDtG,GAAI,GACCtH,EAAI,EAAGA,EAAI4N,EAAK1N,OAAQF,IAE7BsH,GADO,GAALtH,EACG4N,EAAK5N,GAAG2M,EAAI,IAAMiB,EAAK5N,GAAG4M,EAE1B,IAAMgB,EAAK5N,GAAG2M,EAAI,IAAMiB,EAAK5N,GAAG4M,CAGzC,OAAOtF,IAGTjO,EAAOD,QAAUuwC,GAIb,SAAStwC,EAAQD,EAASM,GAO9B,QAAS8wD,GAASv3B,EAAS3pB,GACzB9P,KAAKy5B,QAAUA,EACfz5B,KAAK8P,QAAUA,EALjB,GAAIlP,GAAUV,EAAoB,GAC9BmwC,EAASnwC,EAAoB,GAOjC8wD,GAASn8C,UAAUw8B,UAAY,SAAUC,GACvC,GAA2C,SAAvCtxC,KAAK8P,QAAQspC,SAASC,cAA0B,CAGlD,IAAK,GAFD77B,GAAO8zB,EAAU,GAAGl+B,EACpBsK,EAAO4zB,EAAU,GAAGl+B,EACf6Z,EAAI,EAAGA,EAAIqkB,EAAU5qC,OAAQumB,IACpCzP,EAAOA,EAAO8zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIoK,EAChDE,EAAOA,EAAO4zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIsK,CAElD,QAASrZ,IAAKmZ,EAAMlZ,IAAKoZ,EAAM0zB,iBAAkBpxC,KAAK8P,QAAQshC,kBAG9D,IAAK,GADD6f,MACKhkC,EAAI,EAAGA,EAAIqkB,EAAU5qC,OAAQumB,IACpCgkC,EAAgBzpD,MACd2L,EAAGm+B,EAAUrkB,GAAG9Z,EAChBC,EAAGk+B,EAAUrkB,GAAG7Z,EAChBqmB,QAASz5B,KAAKy5B,SAGlB,OAAOw3B,IAUXD,EAASzf,KAAO,SAAUsD,EAAUyF,EAAoB9I,GACtD,GAEI0f,GACAxnD,EAAKynD,EACL99C,EACA7M,EAAGymB,EALHmkC,KACAC,KAKAC,EAAY,CAGhB,KAAK9qD,EAAI,EAAGA,EAAIquC,EAASnuC,OAAQF,IAE/B,GADA6M,EAAQm+B,EAAUjc,OAAOsf,EAASruC,IACP,OAAvB6M,EAAMvD,QAAQ1B,OACK,GAAjBiF,EAAM4W,UAAyE7jB,SAArDorC,EAAU1hC,QAAQylB,OAAOsE,WAAWgb,EAASruC,KAAyE,GAApDgrC,EAAU1hC,QAAQylB,OAAOsE,WAAWgb,EAASruC,KAC3I,IAAKymB,EAAI,EAAGA,EAAIqtB,EAAmBzF,EAASruC,IAAIE,OAAQumB,IACtDmkC,EAAa5pD,MACX2L,EAAGmnC,EAAmBzF,EAASruC,IAAIymB,GAAG9Z,EACtCC,EAAGknC,EAAmBzF,EAASruC,IAAIymB,GAAG7Z,EACtCqmB,QAASob,EAASruC,GAClBmN,MAAO2mC,EAAmBzF,EAASruC,IAAIymB,GAAGtZ,QAE5C29C,GAAa,CAMrB,IAAiB,GAAbA,EAiBJ,IAZAF,EAAav5C,KAAK,SAAUvR,EAAGC,GAC7B,MAAID,GAAE6M,GAAK5M,EAAE4M,EACJ7M,EAAEmzB,QAAUlzB,EAAEkzB,QAEdnzB,EAAE6M,EAAI5M,EAAE4M,IAKnB69C,EAASO,sBAAsBF,EAAeD,GAGzC5qD,EAAI,EAAGA,EAAI4qD,EAAa1qD,OAAQF,IAAK,CACxC6M,EAAQm+B,EAAUjc,OAAO67B,EAAa5qD,GAAGizB,QACzC,IAAI4S,GAAW,GAAMh5B,EAAMvD,QAAQspC,SAASnlC,KAE5CvK,GAAM0nD,EAAa5qD,GAAG2M,CACtB,IAAIq+C,GAAe,CACnB,IAA2BprD,SAAvBirD,EAAc3nD,GACZlD,EAAI,EAAI4qD,EAAa1qD,SACvBwqD,EAAexsD,KAAKwnB,IAAIklC,EAAa5qD,EAAI,GAAG2M,EAAIzJ,IAE9ClD,EAAI,IACN0qD,EAAexsD,KAAKL,IAAI6sD,EAAcxsD,KAAKwnB,IAAIklC,EAAa5qD,EAAI,GAAG2M,EAAIzJ,KAEzEynD,EAAWH,EAASS,iBAAiBP,EAAc79C,EAAOg5B,OACrD,CACL,GAAIqlB,GAAUlrD,GAAK6qD,EAAc3nD,GAAKioD,OAASN,EAAc3nD,GAAKkoD,UAC9DC,EAAUrrD,GAAK6qD,EAAc3nD,GAAKkoD,SAAW,EAC7CF,GAAUN,EAAa1qD,SACzBwqD,EAAexsD,KAAKwnB,IAAIklC,EAAaM,GAASv+C,EAAIzJ,IAEhDmoD,EAAU,IACZX,EAAexsD,KAAKL,IAAI6sD,EAAcxsD,KAAKwnB,IAAIklC,EAAaS,GAAS1+C,EAAIzJ,KAE3EynD,EAAWH,EAASS,iBAAiBP,EAAc79C,EAAOg5B,GAC1DglB,EAAc3nD,GAAKkoD,UAAY,EAEa,SAAxCv+C,EAAMvD,QAAQspC,SAASC,eACzBmY,EAAeH,EAAc3nD,GAAKooD,YAClCT,EAAc3nD,GAAKooD,aAAez+C,EAAM68B,aAAekhB,EAAa5qD,GAAG4M,GACtB,cAAxCC,EAAMvD,QAAQspC,SAASC,gBAChC8X,EAASl9C,MAAQk9C,EAASl9C,MAAQo9C,EAAc3nD,GAAKioD,OACrDR,EAASjmC,QAAUmmC,EAAc3nD,GAAKkoD,SAAWT,EAASl9C,MAAQ,GAAMk9C,EAASl9C,OAASo9C,EAAc3nD,GAAKioD,OAAS,GAClF,QAAhCt+C,EAAMvD,QAAQspC,SAAShQ,MACzB+nB,EAASjmC,QAAU,GAAMimC,EAASl9C,MACO,SAAhCZ,EAAMvD,QAAQspC,SAAShQ,QAChC+nB,EAASjmC,QAAU,GAAMimC,EAASl9C,QAIxCrT,EAAQoT,QAAQo9C,EAAa5qD,GAAG2M,EAAIg+C,EAASjmC,OAAQkmC,EAAa5qD,GAAG4M,EAAIo+C,EAAcL,EAASl9C,MAAOZ,EAAM68B,aAAekhB,EAAa5qD,GAAG4M,EAAGC,EAAMvK,UAAY,WAAY0oC,EAAU7E,YAAa6E,EAAUlG,KAEtK,GAApCj4B,EAAMvD,QAAQ0D,WAAWzD,SAC3BsgC,EAAOkB,MAAM6f,EAAa5qD,IAAK6M,EAAOm+B,EAAW2f,EAASjmC,UAYhE8lC,EAASO,sBAAwB,SAAUF,EAAeD,GAGxD,IAAK,GADDF,GACK1qD,EAAI,EAAGA,EAAI4qD,EAAa1qD,OAAQF,IACnCA,EAAI,EAAI4qD,EAAa1qD,SACvBwqD,EAAexsD,KAAKwnB,IAAIklC,EAAa5qD,EAAI,GAAG2M,EAAIi+C,EAAa5qD,GAAG2M,IAE9D3M,EAAI,IACN0qD,EAAexsD,KAAKL,IAAI6sD,EAAcxsD,KAAKwnB,IAAIklC,EAAa5qD,EAAI,GAAG2M,EAAIi+C,EAAa5qD,GAAG2M,KAErE,GAAhB+9C,IACuC9qD,SAArCirD,EAAcD,EAAa5qD,GAAG2M,KAChCk+C,EAAcD,EAAa5qD,GAAG2M,IAAOw+C,OAAQ,EAAGC,SAAU,EAAGE,YAAa,IAE5ET,EAAcD,EAAa5qD,GAAG2M,GAAGw+C,QAAU,IAcjDX,EAASS,iBAAmB,SAAUP,EAAc79C,EAAOg5B,GACzD,GAAIp4B,GAAOiX,CAqBX,OApBIgmC,GAAe79C,EAAMvD,QAAQspC,SAASnlC,OAASi9C,EAAe,GAChEj9C,EAAuBo4B,EAAf6kB,EAA0B7kB,EAAW6kB,EAE7ChmC,EAAS,EAC2B,QAAhC7X,EAAMvD,QAAQspC,SAAShQ,MACzBle,GAAU,GAAMgmC,EACyB,SAAhC79C,EAAMvD,QAAQspC,SAAShQ,QAChCle,GAAU,GAAMgmC,KAIlBj9C,EAAQZ,EAAMvD,QAAQspC,SAASnlC,MAC/BiX,EAAS,EAC2B,QAAhC7X,EAAMvD,QAAQspC,SAAShQ,MACzBle,GAAU,GAAM7X,EAAMvD,QAAQspC,SAASnlC,MACE,SAAhCZ,EAAMvD,QAAQspC,SAAShQ,QAChCle,GAAU,GAAM7X,EAAMvD,QAAQspC,SAASnlC,SAIlCA,MAAOA,EAAOiX,OAAQA,IAGjC8lC,EAASpV,oBAAsB,SAAUqV,EAAiB1W,EAAa1F,EAAUkd,EAAYp8B,GAC3F,GAAIs7B,EAAgBvqD,OAAS,EAAG,CAE9BuqD,EAAgBp5C,KAAK,SAAUvR,EAAGC,GAChC,MAAID,GAAE6M,GAAK5M,EAAE4M,EACJ7M,EAAEmzB,QAAUlzB,EAAEkzB,QAEdnzB,EAAE6M,EAAI5M,EAAE4M,GAGnB,IAAIk+C,KAEJL,GAASO,sBAAsBF,EAAeJ,GAC9C1W,EAAYwX,GAAcf,EAASgB,qBAAqBX,EAAeJ,GACvE1W,EAAYwX,GAAY3gB,iBAAmBzb,EAC3Ckf,EAASrtC,KAAKuqD,KAIlBf,EAASgB,qBAAuB,SAAUX,EAAeD,GAIvD,IAAK,GAHD1nD,GACA8T,EAAO4zC,EAAa,GAAGh+C,EACvBsK,EAAO0zC,EAAa,GAAGh+C,EAClB5M,EAAI,EAAGA,EAAI4qD,EAAa1qD,OAAQF,IACvCkD,EAAM0nD,EAAa5qD,GAAG2M,EACK/M,SAAvBirD,EAAc3nD,IAChB8T,EAAOA,EAAO4zC,EAAa5qD,GAAG4M,EAAIg+C,EAAa5qD,GAAG4M,EAAIoK,EACtDE,EAAOA,EAAO0zC,EAAa5qD,GAAG4M,EAAIg+C,EAAa5qD,GAAG4M,EAAIsK,GAEtD2zC,EAAc3nD,GAAKooD,aAAeV,EAAa5qD,GAAG4M,CAGtD,KAAK,GAAI6+C,KAAQZ,GACXA,EAAcrrD,eAAeisD,KAC/Bz0C,EAAOA,EAAO6zC,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAct0C,EAClFE,EAAOA,EAAO2zC,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAcp0C,EAItF,QAASrZ,IAAKmZ,EAAMlZ,IAAKoZ,IAG3B7d,EAAOD,QAAUoxD,GAIb,SAASnxD,EAAQD,EAASM,GAM9B,QAASmwC,GAAO5W,EAAS3pB,GACvB9P,KAAKy5B,QAAUA,EACfz5B,KAAK8P,QAAUA,EAJjB,GAAIlP,GAAUV,EAAoB,EAOlCmwC,GAAOx7B,UAAUw8B,UAAY,SAAUC,GAGrC,IAAK,GAFD9zB,GAAO8zB,EAAU,GAAGl+B,EACpBsK,EAAO4zB,EAAU,GAAGl+B,EACf6Z,EAAI,EAAGA,EAAIqkB,EAAU5qC,OAAQumB,IACpCzP,EAAOA,EAAO8zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIoK,EAChDE,EAAOA,EAAO4zB,EAAUrkB,GAAG7Z,EAAIk+B,EAAUrkB,GAAG7Z,EAAIsK,CAElD,QAASrZ,IAAKmZ,EAAMlZ,IAAKoZ,EAAM0zB,iBAAkBpxC,KAAK8P,QAAQshC,mBAGhEf,EAAOx7B,UAAU08B,KAAO,SAAU9Y,EAASplB,EAAOm+B,EAAWtmB,GAC3DmlB,EAAOkB,KAAK9Y,EAASplB,EAAOm+B,EAAWtmB,IAYzCmlB,EAAOkB,KAAO,SAAU9Y,EAASplB,EAAOm+B,EAAWtmB,GAClC9kB,SAAX8kB,IACFA,EAAS,EAEX,KAAK,GAAI1kB,GAAI,EAAGA,EAAIiyB,EAAQ/xB,OAAQF,IAClC5F,EAAQsS,UAAUulB,EAAQjyB,GAAG2M,EAAI+X,EAAQuN,EAAQjyB,GAAG4M,EAAGC,EAAOm+B,EAAU7E,YAAa6E,EAAUlG,IAAK7S,EAAQjyB,GAAGmN,QAInH9T,EAAOD,QAAUywC,GAIb,SAASxwC,EAAQD,EAASM,IAEF,SAASL,IAMpC,SAAUqyD,EAAQvyD,GACRE,EAAOD,QAAUD,KAG1BK,KAAM,WAIJ,QAASmyD,KACL,MAAOC,IAAa14C,MAAM,KAAMjT,WAKpC,QAAS4rD,GAAiB/oD,GACtB8oD,GAAe9oD,EAGnB,QAASgpD,KAEL,OACIC,OAAkB,EAClBC,gBACAC,eACAptC,SAAkB,GAClBqtC,cAAkB,EAClBC,WAAkB,EAClBC,aAAkB,KAClBC,eAAkB,EAClBC,iBAAkB,EAClBC,KAAkB,GAI1B,QAAS/rD,GAAQgsD,GACb,MAAiD,mBAA1C5rD,OAAOyN,UAAUjP,SAASrF,KAAKyyD,GAG1C,QAASnuD,GAAOmuD,GACZ,MAAiD,kBAA1C5rD,OAAOyN,UAAUjP,SAASrF,KAAKyyD,IAA8BA,YAAiBluD,MAGzF,QAAS0J,GAAIpG,EAAK0S,GACd,GAActU,GAAVysD,IACJ,KAAKzsD,EAAI,EAAGA,EAAI4B,EAAI1B,SAAUF,EAC1BysD,EAAIzrD,KAAKsT,EAAG1S,EAAI5B,GAAIA,GAExB,OAAOysD,GAGX,QAASC,GAAW5sD,EAAGC,GACnB,MAAOa,QAAOyN,UAAU7O,eAAezF,KAAK+F,EAAGC,GAGnD,QAASK,GAAON,EAAGC,GACf,IAAK,GAAIC,KAAKD,GACN2sD,EAAW3sD,EAAGC,KACdF,EAAEE,GAAKD,EAAEC,GAYjB,OARI0sD,GAAW3sD,EAAG,cACdD,EAAEV,SAAWW,EAAEX,UAGfstD,EAAW3sD,EAAG,aACdD,EAAEwB,QAAUvB,EAAEuB,SAGXxB,EAGX,QAAS6sD,GAAuBH,EAAOrvB,EAAQ6C,EAAQkiB,GACnD,MAAO0K,IAAiBJ,EAAOrvB,EAAQ6C,EAAQkiB,GAAQ,GAAM2K,MAGjE,QAASC,GAAe9yD,GAiBpB,MAhBkB,OAAdA,EAAE+yD,WACF/yD,EAAE+yD,UAAYruD,MAAM1E,EAAEo6B,GAAG44B,YACrBhzD,EAAEizD,IAAIpuC,SAAW,IAChB7kB,EAAEizD,IAAIlB,QACN/xD,EAAEizD,IAAIb,eACNpyD,EAAEizD,IAAId,YACNnyD,EAAEizD,IAAIZ,gBACNryD,EAAEizD,IAAIX,gBAEPtyD,EAAEkzD,UACFlzD,EAAE+yD,SAAW/yD,EAAE+yD,UACa,IAAxB/yD,EAAEizD,IAAIf,eACwB,IAA9BlyD,EAAEizD,IAAIjB,aAAa9rD,QACDN,SAAlB5F,EAAEizD,IAAIE,UAGXnzD,EAAE+yD,SAGb,QAASK,GAAsBC,GAC3B,GAAIrzD,GAAI2yD,EAAsBW,EAAAA,EAQ9B,OAPa,OAATD,EACAjtD,EAAOpG,EAAEizD,IAAKI,GAGdrzD,EAAEizD,IAAIX,iBAAkB,EAGrBtyD,EAKX,QAASuzD,GAAWnpC,EAAID,GACpB,GAAInkB,GAAGT,EAAMiuD,CAiCb,IA/BqC,mBAA1BrpC,GAAKspC,mBACZrpC,EAAGqpC,iBAAmBtpC,EAAKspC,kBAER,mBAAZtpC,GAAKupC,KACZtpC,EAAGspC,GAAKvpC,EAAKupC,IAEM,mBAAZvpC,GAAKwpC,KACZvpC,EAAGupC,GAAKxpC,EAAKwpC,IAEM,mBAAZxpC,GAAKypC,KACZxpC,EAAGwpC,GAAKzpC,EAAKypC,IAEW,mBAAjBzpC,GAAK+oC,UACZ9oC,EAAG8oC,QAAU/oC,EAAK+oC,SAEG,mBAAd/oC,GAAK0pC,OACZzpC,EAAGypC,KAAO1pC,EAAK0pC,MAEQ,mBAAhB1pC,GAAK2pC,SACZ1pC,EAAG0pC,OAAS3pC,EAAK2pC,QAEO,mBAAjB3pC,GAAK4pC,UACZ3pC,EAAG2pC,QAAU5pC,EAAK4pC,SAEE,mBAAb5pC,GAAK8oC,MACZ7oC,EAAG6oC,IAAM9oC,EAAK8oC,KAEU,mBAAjB9oC,GAAK6pC,UACZ5pC,EAAG4pC,QAAU7pC,EAAK6pC,SAGlBC,GAAiB/tD,OAAS,EAC1B,IAAKF,IAAKiuD,IACN1uD,EAAO0uD,GAAiBjuD,GACxBwtD,EAAMrpC,EAAK5kB,GACQ,mBAARiuD,KACPppC,EAAG7kB,GAAQiuD,EAKvB,OAAOppC,GAMX,QAAS8pC,GAAOC,GACZZ,EAAW/zD,KAAM20D,GACjB30D,KAAK46B,GAAK,GAAI91B,OAAM6vD,EAAO/5B,IAGvBg6B,MAAqB,IACrBA,IAAmB,EACnBzC,EAAmB0C,aAAa70D,MAChC40D,IAAmB,GAI3B,QAAS7sD,GAAUjC,GACf,MAAOA,aAAe4uD,IAAkB,MAAP5uD,GAAeotD,EAAWptD,EAAK,oBAGpE,QAASgvD,GAAMC,GACX,GAAIC,IAAiBD,EACjBvwD,EAAQ,CAUZ,OARsB,KAAlBwwD,GAAuBC,SAASD,KAE5BxwD,EADAwwD,GAAiB,EACTtwD,KAAKgB,MAAMsvD,GAEXtwD,KAAK82C,KAAKwZ,IAInBxwD,EAGX,QAAS0wD,GAAc3L,EAAQC,EAAQ2L,GACnC,GAGI3uD,GAHAkB,EAAMhD,KAAKL,IAAIklD,EAAO7iD,OAAQ8iD,EAAO9iD,QACrC0uD,EAAa1wD,KAAKwnB,IAAIq9B,EAAO7iD,OAAS8iD,EAAO9iD,QAC7C2uD,EAAQ,CAEZ,KAAK7uD,EAAI,EAAOkB,EAAJlB,EAASA,KACZ2uD,GAAe5L,EAAO/iD,KAAOgjD,EAAOhjD,KACnC2uD,GAAeL,EAAMvL,EAAO/iD,MAAQsuD,EAAMtL,EAAOhjD,MACnD6uD,GAGR,OAAOA,GAAQD,EAGnB,QAASE,MAMT,QAASC,GAAgB7rD,GACrB,MAAOA,GAAMA,EAAIg9B,cAAc/6B,QAAQ,IAAK,KAAOjC,EAMvD,QAAS8rD,GAAaC,GAGlB,IAFA,GAAWxoC,GAAGpD,EAAM2c,EAAQx9B,EAAxBxC,EAAI,EAEDA,EAAIivD,EAAM/uD,QAAQ,CAKrB,IAJAsC,EAAQusD,EAAgBE,EAAMjvD,IAAIwC,MAAM,KACxCikB,EAAIjkB,EAAMtC,OACVmjB,EAAO0rC,EAAgBE,EAAMjvD,EAAI,IACjCqjB,EAAOA,EAAOA,EAAK7gB,MAAM,KAAO,KACzBikB,EAAI,GAAG,CAEV,GADAuZ,EAASkvB,EAAW1sD,EAAMyD,MAAM,EAAGwgB,GAAGhkB,KAAK,MAEvC,MAAOu9B,EAEX,IAAI3c,GAAQA,EAAKnjB,QAAUumB,GAAKioC,EAAclsD,EAAO6gB,GAAM,IAASoD,EAAI,EAEpE,KAEJA,KAEJzmB,IAEJ,MAAO,MAGX,QAASkvD,GAAW99C,GAChB,GAAI+9C,GAAY,IAEhB,KAAKnrB,GAAQ5yB,IAA2B,mBAAX/X,IACrBA,GAAUA,EAAOD,QACrB,IACI+1D,EAAYC,GAAaC,OACvB,WAAkC,GAAI7qD,GAAI,GAAIxH,OAAM,gCAAiE,MAA7BwH,GAAE8qD,KAAO,mBAA0B9qD,KAG7H+qD,EAAmCJ,GACrC,MAAO3qD,IAEb,MAAOw/B,IAAQ5yB,GAMnB,QAASm+C,GAAoCrsD,EAAK+O,GAC9C,GAAIrE,EAeJ,OAdI1K,KAEI0K,EADkB,mBAAXqE,GACAu9C,EAA0BtsD,GAG1BusD,EAAavsD,EAAK+O,GAGzBrE,IAEAwhD,GAAexhD,IAIhBwhD,GAAaC,MAGxB,QAASI,GAAcr+C,EAAMa,GACzB,MAAe,QAAXA,GACAA,EAAOy9C,KAAOt+C,EACT4yB,GAAQ5yB,KACT4yB,GAAQ5yB,GAAQ,GAAI09C,IAExB9qB,GAAQ5yB,GAAMg1C,IAAIn0C,GAGlBs9C,EAAmCn+C,GAE5B4yB,GAAQ5yB,WAGR4yB,IAAQ5yB,GACR,MAKf,QAASo+C,GAA2BtsD,GAChC,GAAI88B,EAMJ,IAJI98B,GAAOA,EAAI8qD,SAAW9qD,EAAI8qD,QAAQqB,QAClCnsD,EAAMA,EAAI8qD,QAAQqB,QAGjBnsD,EACD,MAAOksD,GAGX,KAAK5uD,EAAQ0C,GAAM,CAGf,GADA88B,EAASkvB,EAAWhsD,GAEhB,MAAO88B,EAEX98B,IAAOA,GAGX,MAAO8rD,GAAa9rD,GAKxB,QAASysD,GAAcC,EAAMC,GACzB,GAAIC,GAAYF,EAAK1vB,aACrB6vB,IAAQD,GAAaC,GAAQD,EAAY,KAAOC,GAAQF,GAAaD,EAGzE,QAASI,GAAeC,GACpB,MAAwB,gBAAVA,GAAqBF,GAAQE,IAAUF,GAAQE,EAAM/vB,eAAiBtgC,OAGxF,QAASswD,GAAqBC,GAC1B,GACIC,GACA7wD,EAFA8wD,IAIJ,KAAK9wD,IAAQ4wD,GACLzD,EAAWyD,EAAa5wD,KACxB6wD,EAAiBJ,EAAezwD,GAC5B6wD,IACAC,EAAgBD,GAAkBD,EAAY5wD,IAK1D,OAAO8wD,GAGX,QAASC,GAAYV,EAAMW,GACvB,MAAO,UAAUvyD,GACb,MAAa,OAATA,GACAwyD,EAAah3D,KAAMo2D,EAAM5xD,GACzB2tD,EAAmB0C,aAAa70D,KAAM+2D,GAC/B/2D,MAEAi3D,EAAaj3D,KAAMo2D,IAKtC,QAASa,GAAcC,EAAKd,GACxB,MAAOc,GAAIt8B,GAAG,OAASs8B,EAAI5C,OAAS,MAAQ,IAAM8B,KAGtD,QAASY,GAAcE,EAAKd,EAAM5xD,GAC9B,MAAO0yD,GAAIt8B,GAAG,OAASs8B,EAAI5C,OAAS,MAAQ,IAAM8B,GAAM5xD,GAK5D,QAAS2yD,GAAQV,EAAOjyD,GACpB,GAAI4xD,EACJ,IAAqB,gBAAVK,GACP,IAAKL,IAAQK,GACTz2D,KAAK4sD,IAAIwJ,EAAMK,EAAML,QAIzB,IADAK,EAAQD,EAAeC,GACI,kBAAhBz2D,MAAKy2D,GACZ,MAAOz2D,MAAKy2D,GAAOjyD,EAG3B,OAAOxE,MAGX,QAASo3D,GAASC,EAAQC,EAAcC,GAIpC,IAHA,GAAIC,GAAS,GAAK9yD,KAAKwnB,IAAImrC,GACvBhnC,EAAOgnC,GAAU,EAEdG,EAAO9wD,OAAS4wD,GACnBE,EAAS,IAAMA,CAEnB,QAAQnnC,EAAQknC,EAAY,IAAM,GAAM,KAAOC,EAenD,QAASC,GAAgBxP,EAAOyP,EAAQC,EAASruD,GAC7C,GAAIsuD,GAAOtuD,CACa,iBAAbA,KACPsuD,EAAO,WACH,MAAO53D,MAAKsJ,OAGhB2+C,IACA4P,GAAqB5P,GAAS2P,GAE9BF,IACAG,GAAqBH,EAAO,IAAM,WAC9B,MAAON,GAASQ,EAAKl+C,MAAM1Z,KAAMyG,WAAYixD,EAAO,GAAIA,EAAO,MAGnEC,IACAE,GAAqBF,GAAW,WAC5B,MAAO33D,MAAK83D,aAAaH,QAAQC,EAAKl+C,MAAM1Z,KAAMyG,WAAYwhD,KAK1E,QAAS8P,GAAuB/E,GAC5B,MAAIA,GAAMjuD,MAAM,YACLiuD,EAAMrnD,QAAQ,WAAY,IAE9BqnD,EAAMrnD,QAAQ,MAAO,IAGhC,QAASqsD,GAAmBr0B,GACxB,GAA4Cn9B,GAAGE,EAA3C8C,EAAQm6B,EAAO5+B,MAAMkzD,GAEzB,KAAKzxD,EAAI,EAAGE,EAAS8C,EAAM9C,OAAYA,EAAJF,EAAYA,IACvCqxD,GAAqBruD,EAAMhD,IAC3BgD,EAAMhD,GAAKqxD,GAAqBruD,EAAMhD,IAEtCgD,EAAMhD,GAAKuxD,EAAuBvuD,EAAMhD,GAIhD,OAAO,UAAU0wD,GACb,GAAIM,GAAS,EACb,KAAKhxD,EAAI,EAAOE,EAAJF,EAAYA,IACpBgxD,GAAUhuD,EAAMhD,YAAckvC,UAAWlsC,EAAMhD,GAAGjG,KAAK22D,EAAKvzB,GAAUn6B,EAAMhD,EAEhF,OAAOgxD,IAKf,QAASU,GAAa13D,EAAGmjC,GACrB,MAAKnjC,GAAE23D,WAIPx0B,EAASy0B,EAAaz0B,EAAQnjC,EAAEs3D,cAE3BO,GAAgB10B,KACjB00B,GAAgB10B,GAAUq0B,EAAmBr0B,IAG1C00B,GAAgB10B,GAAQnjC,IATpBA,EAAEs3D,aAAaQ,cAY9B,QAASF,GAAaz0B,EAAQ6C,GAG1B,QAAS+xB,GAA4BvF,GACjC,MAAOxsB,GAAOgyB,eAAexF,IAAUA,EAH3C,GAAIxsD,GAAI,CAOR,KADAiyD,GAAsBC,UAAY,EAC3BlyD,GAAK,GAAKiyD,GAAsBtpD,KAAKw0B,IACxCA,EAASA,EAAOh4B,QAAQ8sD,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClClyD,GAAK,CAGT,OAAOm9B,GAyBX,QAASg1B,GAAe1Q,EAAO2Q,EAAOC,GAClCC,GAAQ7Q,GAA0B,kBAAV2Q,GAAuBA,EAAQ,SAAUG,GAC7D,MAAQA,IAAYF,EAAeA,EAAcD,GAIzD,QAASI,GAAuB/Q,EAAO0M,GACnC,MAAKzB,GAAW4F,GAAS7Q,GAIlB6Q,GAAQ7Q,GAAO0M,EAAOjB,QAASiB,EAAOH,SAHlC,GAAIyE,QAAOC,EAAejR,IAOzC,QAASiR,GAAejsD,GACpB,MAAOA,GAAEtB,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAUwtD,EAASrJ,EAAIC,EAAIC,EAAIoJ,GACrG,MAAOtJ,IAAMC,GAAMC,GAAMoJ,IAC1BztD,QAAQ,yBAA0B,QAKzC,QAAS0tD,GAAepR,EAAO3+C,GAC3B,GAAI9C,GAAGoxD,EAAOtuD,CASd,KARqB,gBAAV2+C,KACPA,GAASA,IAEW,gBAAb3+C,KACPsuD,EAAO,SAAU5E,EAAOxpD,GACpBA,EAAMF,GAAYwrD,EAAM9B,KAG3BxsD,EAAI,EAAGA,EAAIyhD,EAAMvhD,OAAQF,IAC1B8yD,GAAOrR,EAAMzhD,IAAMoxD,EAI3B,QAAS2B,GAAmBtR,EAAO3+C,GAC/B+vD,EAAcpR,EAAO,SAAU+K,EAAOxpD,EAAOmrD,EAAQ1M,GACjD0M,EAAO6E,GAAK7E,EAAO6E,OACnBlwD,EAAS0pD,EAAO2B,EAAO6E,GAAI7E,EAAQ1M,KAI3C,QAASwR,GAAwBxR,EAAO+K,EAAO2B,GAC9B,MAAT3B,GAAiBE,EAAWoG,GAAQrR,IACpCqR,GAAOrR,GAAO+K,EAAO2B,EAAO+E,GAAI/E,EAAQ1M,GAYhD,QAAS0R,GAAY1+B,EAAMG,GACvB,MAAO,IAAIt2B,MAAKA,KAAK80D,IAAI3+B,EAAMG,EAAQ,EAAG,IAAIy+B,aA6ClD,QAASC,GAAct5D,GACnB,MAAOR,MAAK+5D,QAAQv5D,EAAE46B,SAI1B,QAAS4+B,GAAmBx5D,GACxB,MAAOR,MAAKi6D,aAAaz5D,EAAE46B,SAG/B,QAAS8+B,GAAmBC,EAAWx2B,EAAQ+kB,GAC3C,GAAIliD,GAAG0wD,EAAK0B,CAQZ,KANK54D,KAAKo6D,eACNp6D,KAAKo6D,gBACLp6D,KAAKq6D,oBACLr6D,KAAKs6D,sBAGJ9zD,EAAI,EAAO,GAAJA,EAAQA,IAAK,CAYrB,GAVA0wD,EAAM/D,GAAuB,IAAM3sD,IAC/BkiD,IAAW1oD,KAAKq6D,iBAAiB7zD,KACjCxG,KAAKq6D,iBAAiB7zD,GAAK,GAAIyyD,QAAO,IAAMj5D,KAAKu6D,OAAOrD,EAAK,IAAIvrD,QAAQ,IAAK,IAAM,IAAK,KACzF3L,KAAKs6D,kBAAkB9zD,GAAK,GAAIyyD,QAAO,IAAMj5D,KAAKw6D,YAAYtD,EAAK,IAAIvrD,QAAQ,IAAK,IAAM,IAAK,MAE9F+8C,GAAW1oD,KAAKo6D,aAAa5zD,KAC9BoyD,EAAQ,IAAM54D,KAAKu6D,OAAOrD,EAAK,IAAM,KAAOl3D,KAAKw6D,YAAYtD,EAAK,IAClEl3D,KAAKo6D,aAAa5zD,GAAK,GAAIyyD,QAAOL,EAAMjtD,QAAQ,IAAK,IAAK,MAG1D+8C,GAAqB,SAAX/kB,GAAqB3jC,KAAKq6D,iBAAiB7zD,GAAG2I,KAAKgrD,GAC7D,MAAO3zD,EACJ,IAAIkiD,GAAqB,QAAX/kB,GAAoB3jC,KAAKs6D,kBAAkB9zD,GAAG2I,KAAKgrD,GACpE,MAAO3zD,EACJ,KAAKkiD,GAAU1oD,KAAKo6D,aAAa5zD,GAAG2I,KAAKgrD,GAC5C,MAAO3zD,IAOnB,QAASi+B,GAAUyyB,EAAK1yD,GACpB,GAAIi2D,EAGJ,OAAqB,gBAAVj2D,KACPA,EAAQ0yD,EAAIY,aAAa4C,YAAYl2D,GAEhB,gBAAVA,IACA0yD,GAIfuD,EAAa/1D,KAAKL,IAAI6yD,EAAI/7B,OAAQw+B,EAAYzC,EAAIj8B,OAAQz2B,IAC1D0yD,EAAIt8B,GAAG,OAASs8B,EAAI5C,OAAS,MAAQ,IAAM,SAAS9vD,EAAOi2D,GACpDvD,GAGX,QAASyD,GAAan2D,GAClB,MAAa,OAATA,GACAigC,EAASzkC,KAAMwE,GACf2tD,EAAmB0C,aAAa70D,MAAM,GAC/BA,MAEAi3D,EAAaj3D,KAAM,SAIlC,QAAS46D,KACL,MAAOjB,GAAY35D,KAAKi7B,OAAQj7B,KAAKo7B,SAGzC,QAASy/B,GAAer6D,GACpB,GAAI6kB,GACA/e,EAAI9F,EAAEk5D,EAmBV,OAjBIpzD,IAAwB,KAAnB9F,EAAEizD,IAAIpuC,WACXA,EACI/e,EAAEw0D,IAAe,GAAKx0D,EAAEw0D,IAAe,GAAMA,GAC7Cx0D,EAAEy0D,IAAe,GAAKz0D,EAAEy0D,IAAepB,EAAYrzD,EAAE00D,IAAO10D,EAAEw0D,KAAUC,GACxEz0D,EAAE20D,IAAe,GAAK30D,EAAE20D,IAAe,IAAmB,KAAZ30D,EAAE20D,MAA+B,IAAd30D,EAAE40D,KAA+B,IAAd50D,EAAE60D,KAAoC,IAAnB70D,EAAE80D,KAAuBH,GAChI30D,EAAE40D,IAAe,GAAK50D,EAAE40D,IAAe,GAAMA,GAC7C50D,EAAE60D,IAAe,GAAK70D,EAAE60D,IAAe,GAAMA,GAC7C70D,EAAE80D,IAAe,GAAK90D,EAAE80D,IAAe,IAAMA,GAC7C,GAEA56D,EAAEizD,IAAI4H,qBAAkCL,GAAX31C,GAAmBA,EAAW01C,MAC3D11C,EAAW01C,IAGfv6D,EAAEizD,IAAIpuC,SAAWA,GAGd7kB,EAGX,QAAS86D,GAAKC,GACNpJ,EAAmBqJ,+BAAgC,GAA4B,mBAAZngC,UAA2BA,QAAQigC,MACtGjgC,QAAQigC,KAAK,wBAA0BC,GAI/C,QAASE,GAAUF,EAAKzgD,GACpB,GAAI4gD,IAAY,CAChB,OAAO90D,GAAO,WAKV,MAJI80D,KACAJ,EAAKC,GACLG,GAAY,GAET5gD,EAAGpB,MAAM1Z,KAAMyG,YACvBqU,GAKP,QAAS6gD,GAAgB/jD,EAAM2jD,GACtBK,GAAahkD,KACd0jD,EAAKC,GACLK,GAAahkD,IAAQ,GA2B7B,QAASikD,IAAclH,GACnB,GAAInuD,GAAGs1D,EACHC,EAASpH,EAAOT,GAChBnvD,EAAQi3D,GAAsB/2D,KAAK82D,EAEvC,IAAIh3D,EAAO,CAEP,IADA4vD,EAAOlB,IAAIV,KAAM,EACZvsD,EAAI,EAAGs1D,EAAIG,GAASv1D,OAAYo1D,EAAJt1D,EAAOA,IACpC,GAAIy1D,GAASz1D,GAAG,GAAGvB,KAAK82D,GAAS,CAE7BpH,EAAOR,GAAK8H,GAASz1D,GAAG,IAAMzB,EAAM,IAAM,IAC1C,OAGR,IAAKyB,EAAI,EAAGs1D,EAAII,GAASx1D,OAAYo1D,EAAJt1D,EAAOA,IACpC,GAAI01D,GAAS11D,GAAG,GAAGvB,KAAK82D,GAAS,CAC7BpH,EAAOR,IAAM+H,GAAS11D,GAAG,EACzB,OAGJu1D,EAAOh3D,MAAMo3D,MACbxH,EAAOR,IAAM,KAEjBiI,GAA0BzH,OAE1BA,GAAOpB,UAAW,EAK1B,QAAS8I,IAAiB1H,GACtB,GAAIwE,GAAUmD,GAAgBr3D,KAAK0vD,EAAOT,GAE1C,OAAgB,QAAZiF,OACAxE,EAAO/5B,GAAK,GAAI91B,OAAMq0D,EAAQ,MAIlC0C,GAAclH,QACVA,EAAOpB,YAAa,UACboB,GAAOpB,SACdpB,EAAmBoK,wBAAwB5H,MAcnD,QAAS6H,IAAYppD,EAAG5S,EAAGsN,EAAGd,EAAGyjD,EAAGxjD,EAAGwvD,GAGnC,GAAIthC,GAAO,GAAIr2B,MAAKsO,EAAG5S,EAAGsN,EAAGd,EAAGyjD,EAAGxjD,EAAGwvD,EAMtC,OAHQ,MAAJrpD,GACA+nB,EAAKoJ,YAAYnxB,GAEd+nB,EAGX,QAASuhC,IAAetpD,GACpB,GAAI+nB,GAAO,GAAIr2B,MAAKA,KAAK80D,IAAIlgD,MAAM,KAAMjT,WAIzC,OAHQ,MAAJ2M,GACA+nB,EAAKwhC,eAAevpD,GAEjB+nB,EA8BX,QAASyhC,IAAW3hC,GAChB,MAAO4hC,IAAW5hC,GAAQ,IAAM,IAGpC,QAAS4hC,IAAW5hC,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAalE,QAAS6hC,MACL,MAAOD,IAAW78D,KAAKi7B,QA+B3B,QAAS8hC,IAAW7F,EAAK8F,EAAgBC,GACrC,GAEIC,GAFAhsD,EAAM+rD,EAAuBD,EAC7BG,EAAkBF,EAAuB/F,EAAIn8B,KAajD,OATIoiC,GAAkBjsD,IAClBisD,GAAmB,GAGDjsD,EAAM,EAAxBisD,IACAA,GAAmB,GAGvBD,EAAiBE,GAAmBlG,GAAKviD,IAAIwoD,EAAiB,MAE1DE,KAAM34D,KAAK82C,KAAK0hB,EAAeliC,YAAc,GAC7CC,KAAMiiC,EAAejiC,QAM7B,QAASqiC,IAAYpG,GACjB,MAAO6F,IAAW7F,EAAKl3D,KAAKu9D,MAAMC,IAAKx9D,KAAKu9D,MAAME,KAAKJ,KAQ3D,QAASK,MACL,MAAO19D,MAAKu9D,MAAMC,IAGtB,QAASG,MACL,MAAO39D,MAAKu9D,MAAME,IAKtB,QAASG,IAAY5K,GACjB,GAAIqK,GAAOr9D,KAAK83D,aAAauF,KAAKr9D,KAClC,OAAgB,OAATgzD,EAAgBqK,EAAOr9D,KAAK2U,IAAqB,GAAhBq+C,EAAQqK,GAAW,KAG/D,QAASQ,IAAe7K,GACpB,GAAIqK,GAAON,GAAW/8D,KAAM,EAAG,GAAGq9D,IAClC,OAAgB,OAATrK,EAAgBqK,EAAOr9D,KAAK2U,IAAqB,GAAhBq+C,EAAQqK,GAAW,KAoB/D,QAASS,IAAmB7iC,EAAMoiC,EAAMn5B,EAAS+4B,EAAsBD,GACnE,GACIe,GACA/iC,EAFAltB,EAAI4uD,GAAczhC,EAAM,EAAG,GAAG+iC,WASlC,OALAlwD,GAAU,IAANA,EAAU,EAAIA,EAClBo2B,EAAqB,MAAXA,EAAkBA,EAAU84B,EACtCe,EAAYf,EAAiBlvD,GAAKA,EAAImvD,EAAuB,EAAI,IAAUD,EAAJlvD,EAAqB,EAAI,GAChGktB,EAAY,GAAKqiC,EAAO,IAAMn5B,EAAU84B,GAAkBe,EAAY,GAGlE9iC,KAAYD,EAAY,EAAIC,EAAYA,EAAO,EAC/CD,UAAYA,EAAY,EAAIA,EAAY4hC,GAAW3hC,EAAO,GAAKD,GAMvE,QAASijC,IAAiBjL,GACtB,GAAIh4B,GAAYt2B,KAAKqqB,OAAO/uB,KAAK86B,QAAQojC,QAAQ,OAASl+D,KAAK86B,QAAQojC,QAAQ,SAAW,OAAS,CACnG,OAAgB,OAATlL,EAAgBh4B,EAAYh7B,KAAK2U,IAAKq+C,EAAQh4B,EAAY,KAIrE,QAASmjC,IAAS73D,EAAGC,EAAG9F,GACpB,MAAS,OAAL6F,EACOA,EAEF,MAALC,EACOA,EAEJ9F,EAGX,QAAS29D,IAAiBzJ,GACtB,GAAIj1B,GAAM,GAAI56B,KACd,OAAI6vD,GAAO0J,SACC3+B,EAAI4+B,iBAAkB5+B,EAAI6+B,cAAe7+B,EAAIm6B,eAEjDn6B,EAAI8E,cAAe9E,EAAI0F,WAAY1F,EAAIyF,WAOnD,QAASq5B,IAAiB7J,GACtB,GAAInuD,GAAG20B,EAAkBsjC,EAAaC,EAAzB1L,IAEb,KAAI2B,EAAO/5B,GAAX,CA6BA,IAzBA6jC,EAAcL,GAAiBzJ,GAG3BA,EAAO6E,IAAyB,MAAnB7E,EAAO+E,GAAGqB,KAAqC,MAApBpG,EAAO+E,GAAGoB,KAClD6D,GAAsBhK,GAItBA,EAAOiK,aACPF,EAAYP,GAASxJ,EAAO+E,GAAGsB,IAAOyD,EAAYzD,KAE9CrG,EAAOiK,WAAahC,GAAW8B,KAC/B/J,EAAOlB,IAAI4H,oBAAqB,GAGpClgC,EAAOuhC,GAAcgC,EAAW,EAAG/J,EAAOiK,YAC1CjK,EAAO+E,GAAGoB,IAAS3/B,EAAKojC,cACxB5J,EAAO+E,GAAGqB,IAAQ5/B,EAAK0+B,cAQtBrzD,EAAI,EAAO,EAAJA,GAAyB,MAAhBmuD,EAAO+E,GAAGlzD,KAAcA,EACzCmuD,EAAO+E,GAAGlzD,GAAKwsD,EAAMxsD,GAAKi4D,EAAYj4D,EAI1C,MAAW,EAAJA,EAAOA,IACVmuD,EAAO+E,GAAGlzD,GAAKwsD,EAAMxsD,GAAsB,MAAhBmuD,EAAO+E,GAAGlzD,GAAqB,IAANA,EAAU,EAAI,EAAKmuD,EAAO+E,GAAGlzD,EAI7D,MAApBmuD,EAAO+E,GAAGuB,KACgB,IAAtBtG,EAAO+E,GAAGwB,KACY,IAAtBvG,EAAO+E,GAAGyB,KACiB,IAA3BxG,EAAO+E,GAAG0B,MACdzG,EAAOkK,UAAW,EAClBlK,EAAO+E,GAAGuB,IAAQ,GAGtBtG,EAAO/5B,IAAM+5B,EAAO0J,QAAU3B,GAAgBF,IAAY9iD,MAAM,KAAMs5C,GAGnD,MAAf2B,EAAON,MACPM,EAAO/5B,GAAGkkC,cAAcnK,EAAO/5B,GAAGmkC,gBAAkBpK,EAAON,MAG3DM,EAAOkK,WACPlK,EAAO+E,GAAGuB,IAAQ,KAI1B,QAAS0D,IAAsBhK,GAC3B,GAAIqK,GAAGC,EAAU5B,EAAMn5B,EAASs5B,EAAKC,EAAKyB,CAE1CF,GAAIrK,EAAO6E,GACC,MAARwF,EAAEG,IAAqB,MAAPH,EAAEI,GAAoB,MAAPJ,EAAEK,GACjC7B,EAAM,EACNC,EAAM,EAMNwB,EAAWd,GAASa,EAAEG,GAAIxK,EAAO+E,GAAGsB,IAAO+B,GAAWK,KAAsB,EAAG,GAAGniC,MAClFoiC,EAAOc,GAASa,EAAEI,EAAG,GACrBl7B,EAAUi6B,GAASa,EAAEK,EAAG,KAExB7B,EAAM7I,EAAOH,QAAQ+I,MAAMC,IAC3BC,EAAM9I,EAAOH,QAAQ+I,MAAME,IAE3BwB,EAAWd,GAASa,EAAEM,GAAI3K,EAAO+E,GAAGsB,IAAO+B,GAAWK,KAAsBI,EAAKC,GAAKxiC,MACtFoiC,EAAOc,GAASa,EAAEA,EAAG,GAEV,MAAPA,EAAElxD,GAEFo2B,EAAU86B,EAAElxD,EACE0vD,EAAVt5B,KACEm5B,GAINn5B,EAFc,MAAP86B,EAAEh0D,EAECg0D,EAAEh0D,EAAIwyD,EAGNA,GAGlB0B,EAAOpB,GAAmBmB,EAAU5B,EAAMn5B,EAASu5B,EAAKD,GAExD7I,EAAO+E,GAAGsB,IAAQkE,EAAKjkC,KACvB05B,EAAOiK,WAAaM,EAAKlkC,UAM7B,QAASohC,IAA0BzH,GAE/B,GAAIA,EAAOR,KAAOhC,EAAmBoN,SAEjC,WADA1D,IAAclH,EAIlBA,GAAO+E,MACP/E,EAAOlB,IAAIlB,OAAQ,CAGnB,IACI/rD,GAAGg5D,EAAalG,EAAQrR,EAAOwX,EAD/B1D,EAAS,GAAKpH,EAAOT,GAErBwL,EAAe3D,EAAOr1D,OACtBi5D,EAAyB,CAI7B,KAFArG,EAASlB,EAAazD,EAAOR,GAAIQ,EAAOH,SAASzvD,MAAMkzD,QAElDzxD,EAAI,EAAGA,EAAI8yD,EAAO5yD,OAAQF,IAC3ByhD,EAAQqR,EAAO9yD,GACfg5D,GAAezD,EAAOh3D,MAAMi0D,EAAsB/Q,EAAO0M,SAAgB,GACrE6K,IACAC,EAAU1D,EAAO3vD,OAAO,EAAG2vD,EAAOx0D,QAAQi4D,IACtCC,EAAQ/4D,OAAS,GACjBiuD,EAAOlB,IAAIhB,YAAYjrD,KAAKi4D,GAEhC1D,EAASA,EAAOtvD,MAAMsvD,EAAOx0D,QAAQi4D,GAAeA,EAAY94D,QAChEi5D,GAA0BH,EAAY94D,QAGtCmxD,GAAqB5P,IACjBuX,EACA7K,EAAOlB,IAAIlB,OAAQ,EAGnBoC,EAAOlB,IAAIjB,aAAahrD,KAAKygD,GAEjCwR,EAAwBxR,EAAOuX,EAAa7K,IAEvCA,EAAOjB,UAAY8L,GACxB7K,EAAOlB,IAAIjB,aAAahrD,KAAKygD,EAKrC0M,GAAOlB,IAAIf,cAAgBgN,EAAeC,EACtC5D,EAAOr1D,OAAS,GAChBiuD,EAAOlB,IAAIhB,YAAYjrD,KAAKu0D,GAI5BpH,EAAOlB,IAAIE,WAAY,GAAQgB,EAAO+E,GAAGuB,KAAS,KAClDtG,EAAOlB,IAAIE,QAAUvtD,QAGzBuuD,EAAO+E,GAAGuB,IAAQ2E,GAAgBjL,EAAOH,QAASG,EAAO+E,GAAGuB,IAAOtG,EAAOkL,WAE1ErB,GAAgB7J,GAChBkG,EAAclG,GAIlB,QAASiL,IAAiBp5B,EAAQvC,EAAM67B,GACpC,GAAIC,EAEJ,OAAgB,OAAZD,EAEO77B,EAEgB,MAAvBuC,EAAOw5B,aACAx5B,EAAOw5B,aAAa/7B,EAAM67B,GACX,MAAft5B,EAAOy5B,MAEdF,EAAOv5B,EAAOy5B,KAAKH,GACfC,GAAe,GAAP97B,IACRA,GAAQ,IAEP87B,GAAiB,KAAT97B,IACTA,EAAO,GAEJA,GAGAA,EAIf,QAASi8B,IAAyBvL,GAC9B,GAAIwL,GACAC,EAEAC,EACA75D,EACA85D,CAEJ,IAAyB,IAArB3L,EAAOR,GAAGztD,OAGV,MAFAiuD,GAAOlB,IAAIZ,eAAgB,OAC3B8B,EAAO/5B,GAAK,GAAI91B,MAAKgvD,EAAAA,GAIzB,KAAKttD,EAAI,EAAGA,EAAImuD,EAAOR,GAAGztD,OAAQF,IAC9B85D,EAAe,EACfH,EAAapM,KAAeY,GACN,MAAlBA,EAAO0J,UACP8B,EAAW9B,QAAU1J,EAAO0J,SAEhC8B,EAAW1M,IAAMnB,IACjB6N,EAAWhM,GAAKQ,EAAOR,GAAG3tD,GAC1B41D,GAA0B+D,GAErB7M,EAAe6M,KAKpBG,GAAgBH,EAAW1M,IAAIf,cAG/B4N,GAAqD,GAArCH,EAAW1M,IAAIjB,aAAa9rD,OAE5Cy5D,EAAW1M,IAAI8M,MAAQD,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrBv5D,GAAO+tD,EAAQyL,GAAcD,GAGjC,QAASK,IAAiB7L,GACtB,IAAIA,EAAO/5B,GAAX,CAIA,GAAIp0B,GAAIkwD,EAAqB/B,EAAOT,GACpCS,GAAO+E,IAAMlzD,EAAEy0B,KAAMz0B,EAAE40B,MAAO50B,EAAEu0B,KAAOv0B,EAAE20B,KAAM30B,EAAEy9B,KAAMz9B,EAAEw9B,OAAQx9B,EAAEu9B,OAAQv9B,EAAEs9B,aAE7E06B,GAAgB7J,IAGpB,QAAS8L,IAAkB9L,GACvB,GAEI1B,GAFAD,EAAQ2B,EAAOT,GACfvwB,EAASgxB,EAAOR,EAKpB,OAFAQ,GAAOH,QAAUG,EAAOH,SAAWwB,EAA0BrB,EAAOP,IAEtD,OAAVpB,GAA8B5sD,SAAXu9B,GAAkC,KAAVqvB,EACpCY,GAAsBjB,WAAW,KAGvB,gBAAVK,KACP2B,EAAOT,GAAKlB,EAAQ2B,EAAOH,QAAQkM,SAAS1N,IAG5CjrD,EAASirD,GACF,GAAI0B,GAAOmG,EAAc7H,KACzBhsD,EAAQ28B,GACfu8B,GAAyBvL,GAClBhxB,EACPy4B,GAA0BzH,GAE1BgM,GAAgBhM,GAGpB1B,EAAM,GAAIyB,GAAOmG,EAAclG,IAC3B1B,EAAI4L,WAEJ5L,EAAIt+C,IAAI,EAAG,KACXs+C,EAAI4L,SAAWz4D,QAGZ6sD,IAGX,QAAS0N,IAAgBhM,GACrB,GAAI3B,GAAQ2B,EAAOT,EACL9tD,UAAV4sD,EACA2B,EAAO/5B,GAAK,GAAI91B,MACTD,EAAOmuD,GACd2B,EAAO/5B,GAAK,GAAI91B,OAAMkuD,GACE,gBAAVA,GACdqJ,GAAiB1H,GACV3tD,EAAQgsD,IACf2B,EAAO+E,GAAKlrD,EAAIwkD,EAAMvmD,MAAM,GAAI,SAAU3G,GACtC,MAAOiG,UAASjG,EAAK,MAEzB04D,GAAgB7J,IACS,gBAAZ,GACb6L,GAAiB7L,GACQ,gBAAZ,GAEbA,EAAO/5B,GAAK,GAAI91B,MAAKkuD,GAErBb,EAAmBoK,wBAAwB5H,GAInD,QAASvB,IAAkBJ,EAAOrvB,EAAQ6C,EAAQkiB,EAAQkY,GACtD,GAAIngE,KAgBJ,OAduB,iBAAb,KACNioD,EAASliB,EACTA,EAASpgC,QAIb3F,EAAEwzD,kBAAmB,EACrBxzD,EAAE49D,QAAU59D,EAAE6zD,OAASsM,EACvBngE,EAAE2zD,GAAK5tB,EACP/lC,EAAEyzD,GAAKlB,EACPvyD,EAAE0zD,GAAKxwB,EACPljC,EAAEizD,QAAUhL,EACZjoD,EAAEgzD,IAAMnB,IAEDmO,GAAiBhgE,GAG5B,QAAS28D,IAAoBpK,EAAOrvB,EAAQ6C,EAAQkiB,GAChD,MAAO0K,IAAiBJ,EAAOrvB,EAAQ6C,EAAQkiB,GAAQ,GAwB3D,QAASmY,IAAO/lD,EAAIgmD,GAChB,GAAI7N,GAAKzsD,CAIT,IAHuB,IAAnBs6D,EAAQp6D,QAAgBM,EAAQ85D,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQp6D,OACT,MAAO02D,KAGX,KADAnK,EAAM6N,EAAQ,GACTt6D,EAAI,EAAGA,EAAIs6D,EAAQp6D,SAAUF,EAC1Bs6D,EAAQt6D,GAAGsU,GAAIm4C,KACfA,EAAM6N,EAAQt6D,GAGtB,OAAOysD,GAIX,QAAS5uD,MACL,GAAIwS,MAAUpK,MAAMlM,KAAKkG,UAAW,EAEpC,OAAOo6D,IAAO,WAAYhqD,GAG9B,QAASvS,MACL,GAAIuS,MAAUpK,MAAMlM,KAAKkG,UAAW,EAEpC,OAAOo6D,IAAO,UAAWhqD,GAG7B,QAASkqD,IAAU5vD,GACf,GAAI0lD,GAAkBH,EAAqBvlD,GACvC6vD,EAAQnK,EAAgB57B,MAAQ,EAChCgmC,EAAWpK,EAAgBqK,SAAW,EACtC3G,EAAS1D,EAAgBz7B,OAAS,EAClC+lC,EAAQtK,EAAgBwG,MAAQ,EAChC+D,EAAOvK,EAAgB97B,KAAO,EAC9B4E,EAAQk3B,EAAgB5yB,MAAQ,EAChCrE,EAAUi3B,EAAgB7yB,QAAU,EACpCnE,EAAUg3B,EAAgB9yB,QAAU,EACpCjE,EAAe+2B,EAAgB/yB,aAAe,CAGlD9jC,MAAKqhE,eAAiBvhC,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJ3/B,KAAKshE,OAASF,EACF,EAARD,EAIJnhE,KAAK+5D,SAAWQ,EACD,EAAX0G,EACQ,GAARD,EAEJhhE,KAAKsU,SAELtU,KAAKw0D,QAAUwB,IAEfh2D,KAAKuhE,UAGT,QAASC,IAAY17D,GACjB,MAAOA,aAAei7D,IAG1B,QAAS71C,IAAQ+8B,EAAOwZ,GACpBhK,EAAexP,EAAO,EAAG,EAAG,WACxB,GAAI/8B,GAASlrB,KAAK0hE,YACdrxC,EAAO,GAKX,OAJa,GAATnF,IACAA,GAAUA,EACVmF,EAAO,KAEJA,EAAO+mC,KAAYlsC,EAAS,IAAK,GAAKu2C,EAAYrK,IAAW,EAAW,GAAI,KAuB3F,QAASuK,IAAiB5F,GACtB,GAAI6F,IAAY7F,GAAU,IAAIh3D,MAAMo3D,QAChC0F,EAAUD,EAAQA,EAAQl7D,OAAS,OACnC4H,GAAWuzD,EAAQ,IAAI98D,MAAM+8D,MAAiB,IAAK,EAAG,GACtDliC,IAAuB,GAAXtxB,EAAM,IAAWwmD,EAAMxmD,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAasxB,GAAWA,EAIzC,QAASmiC,IAAgB/O,EAAOgP,GAC5B,GAAI/O,GAAKvlC,CACT,OAAIs0C,GAAM1N,QACNrB,EAAM+O,EAAMlnC,QACZpN,GAAQ3lB,EAASirD,IAAUnuD,EAAOmuD,IAAUA,GAASoK,GAAmBpK,KAAYC,EAEpFA,EAAIr4B,GAAGqnC,SAAShP,EAAIr4B,GAAKlN,GACzBykC,EAAmB0C,aAAa5B,GAAK,GAC9BA,GAEAmK,GAAmBpK,GAAOkP,QAKzC,QAASC,IAAe3hE,GAGpB,MAAoD,KAA5CkE,KAAKqqB,MAAMvuB,EAAEo6B,GAAGwnC,oBAAsB,IAqBlD,QAASC,IAAcrP,EAAOsP,GAC1B,GACIC,GADAr3C,EAASlrB,KAAKu0D,SAAW,CAE7B,OAAa,OAATvB,GACqB,gBAAVA,KACPA,EAAQ2O,GAAiB3O,IAEzBtuD,KAAKwnB,IAAI8mC,GAAS,KAClBA,EAAgB,GAARA,IAEPhzD,KAAKs0D,QAAUgO,IAChBC,EAAcJ,GAAcniE,OAEhCA,KAAKu0D,QAAUvB,EACfhzD,KAAKs0D,QAAS,EACK,MAAfiO,GACAviE,KAAK2U,IAAI4tD,EAAa,KAEtBr3C,IAAW8nC,KACNsP,GAAiBtiE,KAAKwiE,kBACvBC,GAA0BziE,KAAM0iE,GAAuB1P,EAAQ9nC,EAAQ,KAAM,GAAG,GACxElrB,KAAKwiE,oBACbxiE,KAAKwiE,mBAAoB,EACzBrQ,EAAmB0C,aAAa70D,MAAM,GACtCA,KAAKwiE,kBAAoB,OAG1BxiE,MAEAA,KAAKs0D,OAASppC,EAASi3C,GAAcniE,MAIpD,QAAS2iE,IAAY3P,EAAOsP,GACxB,MAAa,OAATtP,GACqB,gBAAVA,KACPA,GAASA,GAGbhzD,KAAK0hE,UAAU1O,EAAOsP,GAEftiE,OAECA,KAAK0hE,YAIrB,QAASkB,IAAgBN,GACrB,MAAOtiE,MAAK0hE,UAAU,EAAGY,GAG7B,QAASO,IAAkBP,GASvB,MARItiE,MAAKs0D,SACLt0D,KAAK0hE,UAAU,EAAGY,GAClBtiE,KAAKs0D,QAAS,EAEVgO,GACAtiE,KAAK0sB,SAASy1C,GAAcniE,MAAO,MAGpCA,KAGX,QAAS8iE,MAML,MALI9iE,MAAKq0D,KACLr0D,KAAK0hE,UAAU1hE,KAAKq0D,MACM,gBAAZr0D,MAAKk0D,IACnBl0D,KAAK0hE,UAAUC,GAAiB3hE,KAAKk0D,KAElCl0D,KAGX,QAAS+iE,IAAsB/P,GAQ3B,MAHIA,GAJCA,EAIOoK,GAAmBpK,GAAO0O,YAH1B,GAMJ1hE,KAAK0hE,YAAc1O,GAAS,KAAO,EAG/C,QAASgQ,MACL,MACIhjE,MAAK0hE,YAAc1hE,KAAK86B,QAAQM,MAAM,GAAGsmC,aACzC1hE,KAAK0hE,YAAc1hE,KAAK86B,QAAQM,MAAM,GAAGsmC,YAIjD,QAASuB,MACL,GAAIjjE,KAAK05D,GAAI,CACT,GAAI/yD,GAAQ3G,KAAKs0D,OAASnB,EAAsBnzD,KAAK05D,IAAM0D,GAAmBp9D,KAAK05D,GACnF,OAAO15D,MAAKm4D,WAAajD,EAAcl1D,KAAK05D,GAAI/yD,EAAM4C,WAAa,EAGvE,OAAO,EAGX,QAAS25D,MACL,OAAQljE,KAAKs0D,OAGjB,QAAS6O,MACL,MAAOnjE,MAAKs0D,OAGhB,QAAS8O,MACL,MAAOpjE,MAAKs0D,QAA2B,IAAjBt0D,KAAKu0D,QAS/B,QAASmO,IAAwB1P,EAAOtpD,GACpC,GAGI2mB,GACAgzC,EACAC,EALAnyD,EAAW6hD,EAEXjuD,EAAQ,IAuDZ,OAlDIy8D,IAAWxO,GACX7hD,GACIsrD,GAAKzJ,EAAMqO,cACXvzD,EAAKklD,EAAMsO,MACX7Q,EAAKuC,EAAM+G,SAES,gBAAV/G,IACd7hD,KACIzH,EACAyH,EAASzH,GAAOspD,EAEhB7hD,EAAS2uB,aAAekzB,IAElBjuD,EAAQw+D,GAAYt+D,KAAK+tD,KACnC3iC,EAAqB,MAAbtrB,EAAM,GAAc,GAAK,EACjCoM,GACIiC,EAAK,EACLtF,EAAKgnD,EAAM/vD,EAAMg2D,KAAgB1qC,EACjCrjB,EAAK8nD,EAAM/vD,EAAMk2D,KAAgB5qC,EACjC7vB,EAAKs0D,EAAM/vD,EAAMm2D,KAAgB7qC,EACjCpjB,EAAK6nD,EAAM/vD,EAAMo2D,KAAgB9qC,EACjCosC,GAAK3H,EAAM/vD,EAAMq2D,KAAgB/qC,KAE3BtrB,EAAQy+D,GAAiBv+D,KAAK+tD,KACxC3iC,EAAqB,MAAbtrB,EAAM,GAAc,GAAK,EACjCoM,GACIiC,EAAIqwD,GAAS1+D,EAAM,GAAIsrB,GACvBogC,EAAIgT,GAAS1+D,EAAM,GAAIsrB,GACvBviB,EAAI21D,GAAS1+D,EAAM,GAAIsrB,GACvBrjB,EAAIy2D,GAAS1+D,EAAM,GAAIsrB,GACvB7vB,EAAIijE,GAAS1+D,EAAM,GAAIsrB,GACvBpjB,EAAIw2D,GAAS1+D,EAAM,GAAIsrB,GACvB2uC,EAAIyE,GAAS1+D,EAAM,GAAIsrB,KAER,MAAZlf,EACPA,KAC2B,gBAAbA,KAA0B,QAAUA,IAAY,MAAQA,MACtEmyD,EAAUI,GAAkBtG,GAAmBjsD,EAASwZ,MAAOyyC,GAAmBjsD,EAASyZ,KAE3FzZ,KACAA,EAASsrD,GAAK6G,EAAQxjC,aACtB3uB,EAASs/C,EAAI6S,EAAQ/I,QAGzB8I,EAAM,GAAItC,IAAS5vD,GAEfqwD,GAAWxO,IAAUE,EAAWF,EAAO,aACvCqQ,EAAI7O,QAAUxB,EAAMwB,SAGjB6O,EAKX,QAASI,IAAUE,EAAKtzC,GAIpB,GAAI4iC,GAAM0Q,GAAO98C,WAAW88C,EAAIh4D,QAAQ,IAAK,KAE7C,QAAQzG,MAAM+tD,GAAO,EAAIA,GAAO5iC,EAGpC,QAASuzC,IAA0BC,EAAMl9D,GACrC,GAAIssD,IAAOnzB,aAAc,EAAGy6B,OAAQ,EAUpC,OARAtH,GAAIsH,OAAS5zD,EAAMy0B,QAAUyoC,EAAKzoC,QACC,IAA9Bz0B,EAAMs0B,OAAS4oC,EAAK5oC,QACrB4oC,EAAK/oC,QAAQnmB,IAAIs+C,EAAIsH,OAAQ,KAAKuJ,QAAQn9D,MACxCssD,EAAIsH,OAGVtH,EAAInzB,cAAgBn5B,GAAUk9D,EAAK/oC,QAAQnmB,IAAIs+C,EAAIsH,OAAQ,KAEpDtH,EAGX,QAASyQ,IAAkBG,EAAMl9D,GAC7B,GAAIssD,EAUJ,OATAtsD,GAAQo7D,GAAgBp7D,EAAOk9D,GAC3BA,EAAKE,SAASp9D,GACdssD,EAAM2Q,GAA0BC,EAAMl9D,IAEtCssD,EAAM2Q,GAA0Bj9D,EAAOk9D,GACvC5Q,EAAInzB,cAAgBmzB,EAAInzB,aACxBmzB,EAAIsH,QAAUtH,EAAIsH,QAGftH,EAGX,QAAS+Q,IAAYvmC,EAAW7lB,GAC5B,MAAO,UAAUo8C,EAAKiQ,GAClB,GAAIC,GAAKC,CAUT,OARe,QAAXF,GAAoB/+D,OAAO++D,KAC3BtI,EAAgB/jD,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5GusD,EAAMnQ,EAAKA,EAAMiQ,EAAQA,EAASE,GAGtCnQ,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCkQ,EAAMxB,GAAuB1O,EAAKiQ,GAClCxB,GAA0BziE,KAAMkkE,EAAKzmC,GAC9Bz9B,MAIf,QAASyiE,IAA2BvL,EAAK/lD,EAAUizD,EAAUvP,GACzD,GAAI/0B,GAAe3uB,EAASkwD,cACxBD,EAAOjwD,EAASmwD,MAChB/G,EAASppD,EAAS4oD,OACtBlF,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzC/0B,GACAo3B,EAAIt8B,GAAGqnC,SAAS/K,EAAIt8B,GAAKkF,EAAeskC,GAExChD,GACApK,EAAaE,EAAK,OAAQD,EAAaC,EAAK,QAAUkK,EAAOgD,GAE7D7J,GACA91B,EAASyyB,EAAKD,EAAaC,EAAK,SAAWqD,EAAS6J,GAEpDvP,GACA1C,EAAmB0C,aAAaqC,EAAKkK,GAAQ7G,GAOrD,QAAS8J,IAA2BjrC,GAGhC,GAAIsG,GAAMtG,GAAQgkC,KACdkH,EAAMvC,GAAgBriC,EAAK1/B,MAAMk+D,QAAQ,OACzCxwC,EAAO1tB,KAAK0tB,KAAK42C,EAAK,QAAQ,GAC9B3gC,EAAgB,GAAPjW,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAO1tB,MAAK2jC,OAAO3jC,KAAK83D,aAAayM,SAAS5gC,EAAQ3jC,KAAMo9D,GAAmB19B,KAGnF,QAAS5E,MACL,MAAO,IAAI45B,GAAO10D,MAGtB,QAAS8jE,IAAS9Q,EAAOyD,GACrB,GAAI+N,EAEJ,OADA/N,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAzD,EAAQjrD,EAASirD,GAASA,EAAQoK,GAAmBpK,IAC7ChzD,MAAQgzD,IAEhBwR,EAAUz8D,EAASirD,IAAUA,GAASoK,GAAmBpK,GAClDwR,GAAWxkE,KAAK86B,QAAQojC,QAAQzH,IAI/C,QAASsN,IAAU/Q,EAAOyD,GACtB,GAAI+N,EAEJ,OADA/N,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAzD,EAAQjrD,EAASirD,GAASA,EAAQoK,GAAmBpK,IACrCA,GAARhzD,OAERwkE,EAAUz8D,EAASirD,IAAUA,GAASoK,GAAmBpK,IACjDhzD,KAAK86B,QAAQ2pC,MAAMhO,GAAS+N,GAI5C,QAASE,IAAW/5C,EAAMC,EAAI6rC,GAC1B,MAAOz2D,MAAK8jE,QAAQn5C,EAAM8rC,IAAUz2D,KAAK+jE,SAASn5C,EAAI6rC,GAG1D,QAASrwB,IAAQ4sB,EAAOyD,GACpB,GAAI+N,EAEJ,OADA/N,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAzD,EAAQjrD,EAASirD,GAASA,EAAQoK,GAAmBpK,IAC7ChzD,QAAUgzD,IAElBwR,GAAWpH,GAAmBpK,IACrBhzD,KAAK86B,QAAQojC,QAAQzH,IAAW+N,GAAWA,IAAaxkE,KAAK86B,QAAQ2pC,MAAMhO,IAI5F,QAASkO,IAAUtN,GACf,MAAa,GAATA,EACO3yD,KAAK82C,KAAK6b,GAEV3yD,KAAKgB,MAAM2xD,GAI1B,QAAS3pC,IAAMslC,EAAOyD,EAAOmO,GACzB,GAEI90C,GAAO0nC,EAFPqN,EAAO9C,GAAgB/O,EAAOhzD,MAC9B8kE,EAAoD,KAAvCD,EAAKnD,YAAc1hE,KAAK0hE,YAqBzC,OAlBAjL,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCe,EAASuN,GAAU/kE,KAAM6kE,GACX,YAAVpO,EACAe,GAAkB,EACD,SAAVf,IACPe,GAAkB,MAGtB1nC,EAAQ9vB,KAAO6kE,EACfrN,EAAmB,WAAVf,EAAqB3mC,EAAQ,IACxB,WAAV2mC,EAAqB3mC,EAAQ,IACnB,SAAV2mC,EAAmB3mC,EAAQ,KACjB,QAAV2mC,GAAmB3mC,EAAQg1C,GAAa,MAC9B,SAAVrO,GAAoB3mC,EAAQg1C,GAAa,OACzCh1C,GAED80C,EAAUpN,EAASmN,GAASnN,GAGvC,QAASuN,IAAWz+D,EAAGC,GAEnB,GAGIy+D,GAASC,EAHTC,EAA0C,IAAvB3+D,EAAE00B,OAAS30B,EAAE20B,SAAiB10B,EAAE60B,QAAU90B,EAAE80B,SAE/DqM,EAASnhC,EAAEw0B,QAAQnmB,IAAIuwD,EAAgB,SAa3C,OAViB,GAAb3+D,EAAIkhC,GACJu9B,EAAU1+D,EAAEw0B,QAAQnmB,IAAIuwD,EAAiB,EAAG,UAE5CD,GAAU1+D,EAAIkhC,IAAWA,EAASu9B,KAElCA,EAAU1+D,EAAEw0B,QAAQnmB,IAAIuwD,EAAiB,EAAG,UAE5CD,GAAU1+D,EAAIkhC,IAAWu9B,EAAUv9B,MAG9By9B,EAAiBD,GAK9B,QAASr/D,MACL,MAAO5F,MAAK86B,QAAQ0L,OAAO,MAAM7C,OAAO,oCAG5C,QAASwhC,MACL,GAAI3kE,GAAIR,KAAK86B,QAAQu4B,KACrB,OAAI,GAAI7yD,EAAEy6B,QAAUz6B,EAAEy6B,QAAU,KACxB,kBAAsBn2B,MAAK+P,UAAU3M,YAE9BlI,KAAKgI,SAASE,cAEdgwD,EAAa13D,EAAG,gCAGpB03D,EAAa13D,EAAG,kCAI/B,QAASmjC,IAAQyhC,GACb,GAAI5N,GAASU,EAAal4D,KAAMolE,GAAejT,EAAmB9tB,cAClE,OAAOrkC,MAAK83D,aAAauN,WAAW7N,GAGxC,QAAS7sC,IAAMyO,EAAMksC,GACjB,MAAO5C,KAAwB93C,GAAI5qB,KAAM2qB,KAAMyO,IAAOoN,OAAOxmC,KAAKwmC,UAAU++B,UAAUD,GAG1F,QAASE,IAASF,GACd,MAAOtlE,MAAK2qB,KAAKyyC,KAAsBkI,GAG3C,QAAS9+B,IAAQ98B,GACb,GAAI+7D,EAEJ,OAAYr/D,UAARsD,EACO1J,KAAKw0D,QAAQqB,OAEpB4P,EAAgBzP,EAA0BtsD,GACrB,MAAjB+7D,IACAzlE,KAAKw0D,QAAUiR,GAEZzlE,MAef,QAAS83D,MACL,MAAO93D,MAAKw0D,QAGhB,QAAS0J,IAASzH,GAId,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACDz2D,KAAKo7B,MAAM,EAEf,KAAK,UACL,IAAK,QACDp7B,KAAKm7B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACDn7B,KAAK2/B,MAAM,EAEf,KAAK,OACD3/B,KAAK4/B,QAAQ,EAEjB,KAAK,SACD5/B,KAAK6/B,QAAQ,EAEjB,KAAK,SACD7/B,KAAK8/B,aAAa,GAgBtB,MAZc,SAAV22B,GACAz2D,KAAKkkC,QAAQ,GAEH,YAAVuyB,GACAz2D,KAAK0lE,WAAW,GAIN,YAAVjP,GACAz2D,KAAKo7B,MAAqC,EAA/B12B,KAAKgB,MAAM1F,KAAKo7B,QAAU,IAGlCp7B,KAGX,QAASykE,IAAOhO,GAEZ,MADAA,GAAQD,EAAeC,GACTrwD,SAAVqwD,GAAiC,gBAAVA,EAChBz2D,KAEJA,KAAKk+D,QAAQzH,GAAO9hD,IAAI,EAAc,YAAV8hD,EAAsB,OAASA,GAAQ/pC,SAAS,EAAG,MAG1F,QAASi5C,MACL,OAAQ3lE,KAAK46B,GAA4B,KAArB56B,KAAKu0D,SAAW,GAGxC,QAASqR,MACL,MAAOlhE,MAAKgB,OAAO1F,KAAO,KAG9B,QAASgI,MACL,MAAOhI,MAAKu0D,QAAU,GAAIzvD,OAAM9E,MAAQA,KAAK46B,GAGjD,QAASrxB,MACL,GAAI/I,GAAIR,IACR,QAAQQ,EAAEy6B,OAAQz6B,EAAE46B,QAAS56B,EAAE26B,OAAQ36B,EAAEyjC,OAAQzjC,EAAEwjC,SAAUxjC,EAAEujC,SAAUvjC,EAAEsjC,eAG/E,QAAS+hC,MACL,MAAOvS,GAAetzD,MAG1B,QAAS8lE,MACL,MAAOl/D,MAAW5G,KAAKyzD,KAG3B,QAASsS,MACL,MAAO/lE,MAAKyzD,IAAIpuC,SAWpB,QAAS2gD,IAAwB/d,EAAOge,GACpCxO,EAAe,GAAIxP,EAAOA,EAAMvhD,QAAS,EAAGu/D,GAkChD,QAASC,IAAYjrC,EAAMuiC,EAAKC,GAC5B,MAAOV,IAAWK,IAAoBniC,EAAM,GAAI,GAAKuiC,EAAMC,IAAOD,EAAKC,GAAKJ,KAKhF,QAAS8I,IAAgBnT,GACrB,GAAI/3B,GAAO8hC,GAAW/8D,KAAMA,KAAK83D,aAAayF,MAAMC,IAAKx9D,KAAK83D,aAAayF,MAAME,KAAKxiC,IACtF,OAAgB,OAAT+3B,EAAgB/3B,EAAOj7B,KAAK2U,IAAKq+C,EAAQ/3B,EAAO,KAG3D,QAASmrC,IAAmBpT,GACxB,GAAI/3B,GAAO8hC,GAAW/8D,KAAM,EAAG,GAAGi7B,IAClC,OAAgB,OAAT+3B,EAAgB/3B,EAAOj7B,KAAK2U,IAAKq+C,EAAQ/3B,EAAO,KAG3D,QAASorC,MACL,MAAOH,IAAYlmE,KAAKi7B,OAAQ,EAAG,GAGvC,QAASqrC,MACL,GAAIC,GAAWvmE,KAAK83D,aAAayF,KACjC,OAAO2I,IAAYlmE,KAAKi7B,OAAQsrC,EAAS/I,IAAK+I,EAAS9I,KAkB3D,QAAS+I,IAAexT,GACpB,MAAgB,OAATA,EAAgBtuD,KAAK82C,MAAMx7C,KAAKo7B,QAAU,GAAK,GAAKp7B,KAAKo7B,MAAoB,GAAb43B,EAAQ,GAAShzD,KAAKo7B,QAAU,GA0E3G,QAASqrC,IAAazT,EAAOxsB,GACzB,GAAqB,gBAAVwsB,GACP,GAAK9tD,MAAM8tD,IAKP,GADAA,EAAQxsB,EAAOkgC,cAAc1T,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQjnD,SAASinD,EAAO,GAShC,OAAOA,GAMX,QAAS2T,IAAgBnmE,GACrB,MAAOR,MAAK4mE,UAAUpmE,EAAEu6B,OAI5B,QAAS8rC,IAAqBrmE,GAC1B,MAAOR,MAAK8mE,eAAetmE,EAAEu6B,OAIjC,QAASgsC,IAAmBvmE,GACxB,MAAOR,MAAKgnE,aAAaxmE,EAAEu6B,OAG/B,QAASksC,IAAqBC,GAC1B,GAAI1gE,GAAG0wD,EAAK0B,CAMZ,KAJK54D,KAAKmnE,iBACNnnE,KAAKmnE,mBAGJ3gE,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANKxG,KAAKmnE,eAAe3gE,KACrB0wD,EAAMkG,IAAoB,IAAM,IAAIriC,IAAIv0B,GACxCoyD,EAAQ,IAAM54D,KAAKonE,SAASlQ,EAAK,IAAM,KAAOl3D,KAAKqnE,cAAcnQ,EAAK,IAAM,KAAOl3D,KAAKsnE,YAAYpQ,EAAK,IACzGl3D,KAAKmnE,eAAe3gE,GAAK,GAAIyyD,QAAOL,EAAMjtD,QAAQ,IAAK,IAAK,MAG5D3L,KAAKmnE,eAAe3gE,GAAG2I,KAAK+3D,GAC5B,MAAO1gE,GAOnB,QAAS+gE,IAAiBvU,GACtB,GAAIj4B,GAAM/6B,KAAKs0D,OAASt0D,KAAK46B,GAAGojC,YAAch+D,KAAK46B,GAAG4sC,QACtD,OAAa,OAATxU,GACAA,EAAQyT,GAAazT,EAAOhzD,KAAK83D,cAC1B93D,KAAK2U,IAAIq+C,EAAQj4B,EAAK,MAEtBA,EAIf,QAAS0sC,IAAuBzU,GAC5B,GAAI9uB,IAAWlkC,KAAK+6B,MAAQ,EAAI/6B,KAAK83D,aAAayF,MAAMC,KAAO,CAC/D,OAAgB,OAATxK,EAAgB9uB,EAAUlkC,KAAK2U,IAAIq+C,EAAQ9uB,EAAS,KAG/D,QAASwjC,IAAoB1U,GAIzB,MAAgB,OAATA,EAAgBhzD,KAAK+6B,OAAS,EAAI/6B,KAAK+6B,IAAI/6B,KAAK+6B,MAAQ,EAAIi4B,EAAQA,EAAQ,GAQvF,QAAS8M,IAAU7X,EAAO0f,GACtBlQ,EAAexP,EAAO,EAAG,EAAG,WACxB,MAAOjoD,MAAK83D,aAAagI,SAAS9/D,KAAK2/B,QAAS3/B,KAAK4/B,UAAW+nC,KAaxE,QAASC,IAAe7O,EAAUvyB,GAC9B,MAAOA,GAAOqhC,eAsBlB,QAASC,IAAY9U,GAGjB,MAAiD,OAAxCA,EAAQ,IAAItsB,cAAc9f,OAAO,GAI9C,QAASmhD,IAAgBpoC,EAAOC,EAASooC,GACrC,MAAIroC,GAAQ,GACDqoC,EAAU,KAAO,KAEjBA,EAAU,KAAO,KAqDhC,QAASC,IAA2BhgB,GAChCwP,EAAe,GAAIxP,EAAO,GAAI,EAAG,eA6BrC,QAASigB,MACL,MAAOloE,MAAKs0D,OAAS,MAAQ,GAGjC,QAAS6T,MACL,MAAOnoE,MAAKs0D,OAAS,6BAA+B,GAsGxD,QAAS8T,IAAoBpV,GACzB,MAAOoK,IAA2B,IAARpK,GAG9B,QAASqV,MACL,MAAOjL,IAAmB1jD,MAAM,KAAMjT,WAAW6hE,YAYrD,QAASC,IAA2B7+D,EAAKwtD,EAAKx3B,GAC1C,GAAI83B,GAASx3D,KAAKwoE,UAAU9+D,EAC5B,OAAyB,kBAAX8tD,GAAwBA,EAAOj3D,KAAK22D,EAAKx3B,GAAO83B,EAYlE,QAASgB,IAAgB9uD,GACrB,GAAI8tD,GAASx3D,KAAKyoE,gBAAgB/+D,EAOlC,QANK8tD,GAAUx3D,KAAKyoE,gBAAgB/+D,EAAIkhC,iBACpC4sB,EAASx3D,KAAKyoE,gBAAgB/+D,EAAIkhC,eAAej/B,QAAQ,mBAAoB,SAAUqoD,GACnF,MAAOA,GAAIvnD,MAAM,KAErBzM,KAAKyoE,gBAAgB/+D,GAAO8tD,GAEzBA,EAKX,QAASc,MACL,MAAOt4D,MAAK0oE,aAMhB,QAAS/Q,IAASN,GACd,MAAOr3D,MAAK2oE,SAASh9D,QAAQ,KAAM0rD,GAGvC,QAASuR,IAAoB7M,GACzB,MAAOA,GAmBX,QAAS8M,IAAwBxR,EAAQiO,EAAevJ,EAAQ+M,GAC5D,GAAItR,GAASx3D,KAAK+oE,cAAchN,EAChC,OAA0B,kBAAXvE,GACXA,EAAOH,EAAQiO,EAAevJ,EAAQ+M,GACtCtR,EAAO7rD,QAAQ,MAAO0rD,GAG9B,QAAS2R,IAAYt7C,EAAM8pC,GACvB,GAAI7zB,GAAS3jC,KAAK+oE,cAAcr7C,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXiW,GAAwBA,EAAO6zB,GAAU7zB,EAAOh4B,QAAQ,MAAO6rD,GAGjF,QAASyR,IAAiBtU,GACtB,GAAI5uD,GAAMS,CACV,KAAKA,IAAKmuD,GACN5uD,EAAO4uD,EAAOnuD,GACM,kBAATT,GACP/F,KAAKwG,GAAKT,EAEV/F,KAAK,IAAMwG,GAAKT,CAKxB/F,MAAKkpE,qBAAuB,GAAIjQ,QAAOj5D,KAAKmpE,cAAche,OAAS,IAAM,UAAUA,QAgDvF,QAASie,IAAYzlC,EAAQx6B,EAAOgH,EAAOk5D,GACvC,GAAI7iC,GAASwvB,IACT3C,EAAMF,IAAwBvG,IAAIyc,EAAQlgE,EAC9C,OAAOq9B,GAAOr2B,GAAOkjD,EAAK1vB,GAG9B,QAAS2lC,IAAM3lC,EAAQx6B,EAAOgH,EAAOwI,EAAO0wD,GAQxC,GAPsB,gBAAX1lC,KACPx6B,EAAQw6B,EACRA,EAASv9B,QAGbu9B,EAASA,GAAU,GAEN,MAATx6B,EACA,MAAOigE,IAAWzlC,EAAQx6B,EAAOgH,EAAOk5D,EAG5C,IAAI7iE,GACA+iE,IACJ,KAAK/iE,EAAI,EAAOmS,EAAJnS,EAAWA,IACnB+iE,EAAI/iE,GAAK4iE,GAAWzlC,EAAQn9B,EAAG2J,EAAOk5D,EAE1C,OAAOE,GAGX,QAASC,IAAmB7lC,EAAQx6B,GAChC,MAAOmgE,IAAK3lC,EAAQx6B,EAAO,SAAU,GAAI,SAG7C,QAASsgE,IAAwB9lC,EAAQx6B,GACrC,MAAOmgE,IAAK3lC,EAAQx6B,EAAO,cAAe,GAAI,SAGlD,QAASugE,IAAqB/lC,EAAQx6B,GAClC,MAAOmgE,IAAK3lC,EAAQx6B,EAAO,WAAY,EAAG,OAG9C,QAASwgE,IAA0BhmC,EAAQx6B,GACvC,MAAOmgE,IAAK3lC,EAAQx6B,EAAO,gBAAiB,EAAG,OAGnD,QAASygE,IAAwBjmC,EAAQx6B,GACrC,MAAOmgE,IAAK3lC,EAAQx6B,EAAO,cAAe,EAAG,OAqBjD,QAAS0gE,MACL,GAAIz1D,GAAiBpU,KAAKsU,KAa1B,OAXAtU,MAAKqhE,cAAgByI,GAAQ9pE,KAAKqhE,eAClCrhE,KAAKshE,MAAgBwI,GAAQ9pE,KAAKshE,OAClCthE,KAAK+5D,QAAgB+P,GAAQ9pE,KAAK+5D,SAElC3lD,EAAK0rB,aAAgBgqC,GAAQ11D,EAAK0rB,cAClC1rB,EAAKyrB,QAAgBiqC,GAAQ11D,EAAKyrB,SAClCzrB,EAAKwrB,QAAgBkqC,GAAQ11D,EAAKwrB,SAClCxrB,EAAKurB,MAAgBmqC,GAAQ11D,EAAKurB,OAClCvrB,EAAKmmD,OAAgBuP,GAAQ11D,EAAKmmD,QAClCnmD,EAAK4sD,MAAgB8I,GAAQ11D,EAAK4sD,OAE3BhhE,KAGX,QAAS+pE,IAAoC54D,EAAU6hD,EAAOxuD,EAAOi5B,GACjE,GAAI92B,GAAQ+7D,GAAuB1P,EAAOxuD,EAM1C,OAJA2M,GAASkwD,eAAiB5jC,EAAY92B,EAAM06D,cAC5ClwD,EAASmwD,OAAiB7jC,EAAY92B,EAAM26D,MAC5CnwD,EAAS4oD,SAAiBt8B,EAAY92B,EAAMozD,QAErC5oD,EAASowD,UAIpB,QAASyI,IAA4BhX,EAAOxuD,GACxC,MAAOulE,IAAmC/pE,KAAMgzD,EAAOxuD,EAAO,GAIlE,QAASylE,IAAiCjX,EAAOxuD,GAC7C,MAAOulE,IAAmC/pE,KAAMgzD,EAAOxuD,EAAO,IAGlE,QAAS0lE,MACL,GAIIrqC,GAASD,EAASD,EAJlBG,EAAe9/B,KAAKqhE,cACpBD,EAAephE,KAAKshE,MACpB/G,EAAev6D,KAAK+5D,QACpB3lD,EAAepU,KAAKsU,MACK0sD,EAAQ,CAkCrC,OA9BA5sD,GAAK0rB,aAAeA,EAAe,IAEnCD,EAAoB8kC,GAAS7kC,EAAe,KAC5C1rB,EAAKyrB,QAAeA,EAAU,GAE9BD,EAAoB+kC,GAAS9kC,EAAU,IACvCzrB,EAAKwrB,QAAeA,EAAU,GAE9BD,EAAoBglC,GAAS/kC,EAAU,IACvCxrB,EAAKurB,MAAeA,EAAQ,GAE5ByhC,GAAQuD,GAAShlC,EAAQ,IAGzBqhC,EAAQ2D,GAASwF,GAAY/I,IAC7BA,GAAQuD,GAASyF,GAAYpJ,IAI7BzG,GAAUoK,GAASvD,EAAO,IAC1BA,GAAU,GAGVJ,GAAU2D,GAASpK,EAAS,IAC5BA,GAAU,GAEVnmD,EAAKgtD,KAASA,EACdhtD,EAAKmmD,OAASA,EACdnmD,EAAK4sD,MAASA,EAEPhhE,KAGX,QAASmqE,IAAa/I,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAASgJ,IAAapJ,GAGlB,MAAe,QAARA,EAAiB,IAG5B,QAAS1wC,IAAImmC,GACT,GAAI2K,GACA7G,EACAz6B,EAAe9/B,KAAKqhE,aAIxB,IAFA5K,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA2K,GAASphE,KAAKshE,MAAUxhC,EAAe,MACvCy6B,EAASv6D,KAAK+5D,QAA8B,GAApBoQ,GAAY/I,GACnB,UAAV3K,EAAoB8D,EAASA,EAAS,EAI7C,QADA6G,EAAOphE,KAAKshE,MAAQ58D,KAAKqqB,MAAMq7C,GAAYpqE,KAAK+5D,QAAU,KAClDtD,GACJ,IAAK,OAAW,MAAO2K,GAAO,EAAethC,EAAe,MAC5D,KAAK,MAAW,MAAOshC,GAAsBthC,EAAe,KAC5D,KAAK,OAAW,MAAc,IAAPshC,EAAsBthC,EAAe,IAC5D,KAAK,SAAW,MAAc,IAAPshC,EAAY,GAAUthC,EAAe,GAC5D,KAAK,SAAW,MAAc,IAAPshC,EAAY,GAAK,GAAKthC,EAAe,GAE5D,KAAK,cAAe,MAAOp7B,MAAKgB,MAAa,GAAP07D,EAAY,GAAK,GAAK,KAAQthC,CACpE,SAAS,KAAM,IAAIt8B,OAAM,gBAAkBizD,IAMvD,QAAS4T,MACL,MACIrqE,MAAKqhE,cACQ,MAAbrhE,KAAKshE,MACJthE,KAAK+5D,QAAU,GAAM,OACK,QAA3BjF,EAAM90D,KAAK+5D,QAAU,IAI7B,QAASuQ,IAAQC,GACb,MAAO,YACH,MAAOvqE,MAAKswB,GAAGi6C,IAavB,QAASC,IAAmB/T,GAExB,MADAA,GAAQD,EAAeC,GAChBz2D,KAAKy2D,EAAQ,OAGxB,QAASgU,IAAW7yD,GAChB,MAAO,YACH,MAAO5X,MAAKsU,MAAMsD,IAY1B,QAASupD,MACL,MAAOwD,IAAS3kE,KAAKohE,OAAS,GAalC,QAASsJ,IAAkB3O,EAAQ1E,EAAQiO,EAAewD,EAAUtiC,GAChE,MAAOA,GAAOmkC,aAAatT,GAAU,IAAKiO,EAAevJ,EAAQ+M,GAGrE,QAAS8B,IAAiCC,EAAgBvF,EAAe9+B,GACrE,GAAIr1B,GAAWuxD,GAAuBmI,GAAgB3+C,MAClD2T,EAAW9Q,GAAM5d,EAASmf,GAAG,MAC7BsP,EAAW7Q,GAAM5d,EAASmf,GAAG,MAC7BqP,EAAW5Q,GAAM5d,EAASmf,GAAG,MAC7B8wC,EAAWryC,GAAM5d,EAASmf,GAAG,MAC7BiqC,EAAWxrC,GAAM5d,EAASmf,GAAG,MAC7B0wC,EAAWjyC,GAAM5d,EAASmf,GAAG,MAE7BhqB,EAAIu5B,EAAUirC,GAAW79D,IAAM,IAAK4yB,IACpB,IAAZD,IAA2B,MAC3BA,EAAUkrC,GAAWtqE,IAAM,KAAMo/B,IACrB,IAAZD,IAA2B,MAC3BA,EAAUmrC,GAAW99D,IAAM,KAAM2yB,IACrB,IAAZyhC,IAA2B,MAC3BA,EAAU0J,GAAWh9D,IAAM,KAAMszD,IACrB,IAAZ7G,IAA2B,MAC3BA,EAAUuQ,GAAWra,IAAM,KAAM8J,IACrB,IAAZyG,IAA2B,OAAmB,KAAMA,EAK5D,OAHA16D,GAAE,GAAKg/D,EACPh/D,EAAE,IAAMukE,EAAiB,EACzBvkE,EAAE,GAAKkgC,EACAkkC,GAAkBhxD,MAAM,KAAMpT,GAIzC,QAASykE,IAAgDC,EAAWC,GAChE,MAA8B7kE,UAA1B0kE,GAAWE,IACJ,EAEG5kE,SAAV6kE,EACOH,GAAWE,IAEtBF,GAAWE,GAAaC,GACjB,GAGX,QAAS1F,IAAU2F,GACf,GAAI1kC,GAASxmC,KAAK83D,aACdN,EAASoT,GAAgC5qE,MAAOkrE,EAAY1kC,EAMhE,OAJI0kC,KACA1T,EAAShxB,EAAOwiC,YAAYhpE,KAAMw3D,IAG/BhxB,EAAO6+B,WAAW7N,GAK7B,QAAS2T,MAEL,GAAIC,GAAIC,GAAgBrrE,KAAKghE,SACzBvQ,EAAI4a,GAAgBrrE,KAAKu6D,UACzB+Q,EAAID,GAAgBrrE,KAAKohE,QACzBp0D,EAAIq+D,GAAgBrrE,KAAK2/B,SACzBn/B,EAAI6qE,GAAgBrrE,KAAK4/B,WACzB3yB,EAAIo+D,GAAgBrrE,KAAK6/B,UAAY7/B,KAAK8/B,eAAiB,KAC3Dv7B,EAAQvE,KAAKurE,WAEjB,OAAKhnE,IAMW,EAARA,EAAY,IAAM,IACtB,KACC6mE,EAAIA,EAAI,IAAM,KACd3a,EAAIA,EAAI,IAAM,KACd6a,EAAIA,EAAI,IAAM,KACbt+D,GAAKxM,GAAKyM,EAAK,IAAM,KACtBD,EAAIA,EAAI,IAAM,KACdxM,EAAIA,EAAI,IAAM,KACdyM,EAAIA,EAAI,IAAM,IAXR,MA35Ff,GAAImlD,IA2MAwD,GArGAnB,GAAmBtC,EAAmBsC,oBAiDtCG,IAAmB,EAmDnBpqB,MAmHA+rB,MA2EA0B,GAAmB,qKAEnBQ,GAAwB,6CAExBJ,MAEAR,MAuFA2T,GAAiB,KACjBC,GAAiB,OACjBC,GAAiB,QACjBC,GAAiB,QACjBC,GAAiB,aACjBC,GAAiB,QACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAiB,eAEjBC,GAAiB,MACjBC,GAAiB,WAEjB/P,GAAiB,qBAEjBgQ,GAAiB,uBAGjBC,GAAY,mHAEZtT,MAuBAQ,MA8BA0B,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,CAQlB3D,GAAe,KAAM,KAAM,GAAI,KAAM,WACjC,MAAOz3D,MAAKo7B,QAAU,IAG1Bq8B,EAAe,MAAO,EAAG,EAAG,SAAU9zB,GAClC,MAAO3jC,MAAK83D,aAAa0C,YAAYx6D,KAAM2jC,KAG/C8zB,EAAe,OAAQ,EAAG,EAAG,SAAU9zB,GACnC,MAAO3jC,MAAK83D,aAAayC,OAAOv6D,KAAM2jC,KAK1CwyB,EAAa,QAAS,KAItBwC,EAAc,IAAQkT,IACtBlT,EAAc,KAAQkT,GAAWJ,IACjC9S,EAAc,MAAQyT,IACtBzT,EAAc,OAAQyT,IAEtB/S,GAAe,IAAK,MAAO,SAAUrG,EAAOxpD,GACxCA,EAAMsxD,IAAShG,EAAM9B,GAAS,IAGlCqG,GAAe,MAAO,QAAS,SAAUrG,EAAOxpD,EAAOmrD,EAAQ1M,GAC3D,GAAI7sB,GAAQu5B,EAAOH,QAAQkG,YAAY1H,EAAO/K,EAAO0M,EAAOjB,QAE/C,OAATt4B,EACA5xB,EAAMsxD,IAAS1/B,EAEfu5B,EAAOlB,IAAIb,aAAeI,GAMlC,IAAIqZ,IAAsB,wFAAwFrjE,MAAM,KAKpHsjE,GAA2B,kDAAkDtjE,MAAM,KA8GnF4yD,KASJzJ,GAAmBqJ,6BAA8B,CAEjD,IAAIQ,IAAwB,4IAExBC,KACC,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIbC,KACC,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAGPI,GAAkB,qBAgDtBnK,GAAmBoK,wBAA0Bd,EACzC,4LAIA,SAAU9G,GACNA,EAAO/5B,GAAK,GAAI91B,MAAK6vD,EAAOT,IAAMS,EAAO0J,QAAU,OAAS,OAwBpE5G,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOz3D,MAAKi7B,OAAS,MAGzBw8B,EAAe,GAAI,OAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,QAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,SAAU,GAAG,GAAO,EAAG,QAI1CtB,EAAa,OAAQ,KAIrBwC,EAAc,IAAUuT,IACxBvT,EAAc,KAAUkT,GAAWJ,IACnC9S,EAAc,OAAUoT,GAAWJ,IACnChT,EAAc,QAAUqT,GAAWJ,IACnCjT,EAAc,SAAUqT,GAAWJ,IAEnCvS,GAAe,OAAQ,QAAS,UAAW2B,IAC3C3B,EAAc,KAAM,SAAUrG,EAAOxpD,GACjCA,EAAMwxD,IAAQ7I,EAAmBoa,kBAAkBvZ,KAevDb,EAAmBoa,kBAAoB,SAAUvZ,GAC7C,MAAO8B,GAAM9B,IAAU8B,EAAM9B,GAAS,GAAK,KAAO,KAKtD,IAAIwZ,IAAa1V,EAAW,YAAY,EAMxCW,GAAe,KAAM,KAAM,GAAI,KAAM,QACrCA,EAAe,KAAM,KAAM,GAAI,KAAM,WAIrCtB,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBwC,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAC/B9S,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAE/BlS,GAAmB,IAAK,KAAM,IAAK,MAAO,SAAUvG,EAAOqK,EAAM1I,EAAQ1M,GACrEoV,EAAKpV,EAAM77C,OAAO,EAAG,IAAM0oD,EAAM9B,IAuCrC,IAAIyZ,KACAjP,IAAM,EACNC,IAAM,EAuBVhG,GAAe,OAAQ,OAAQ,GAAI,OAAQ,aAI3CtB,EAAa,YAAa,OAI1BwC,EAAc,MAAQmT,IACtBnT,EAAc,OAAQ+S,IACtBrS,GAAe,MAAO,QAAS,SAAUrG,EAAOxpD,EAAOmrD,GACnDA,EAAOiK,WAAa9J,EAAM9B,KA4J9Bb,EAAmBoN,SAAW,YAoO9B,IAAImN,IAAejR,EACd,mGACA,WACI,GAAI90D,GAAQy2D,GAAmB1jD,MAAM,KAAMjT,UAC3C,OAAezG,MAAR2G,EAAe3G,KAAO2G,IAIlCgmE,GAAelR,EACf,mGACA,WACI,GAAI90D,GAAQy2D,GAAmB1jD,MAAM,KAAMjT;;AAC3C,MAAOE,GAAQ3G,KAAOA,KAAO2G,GA0FrCukB,IAAO,IAAK,KACZA,GAAO,KAAM,IAIbytC,EAAc,IAAMwD,IACpBxD,EAAc,KAAMwD,IACpB9C,GAAe,IAAK,MAAO,SAAUrG,EAAOxpD,EAAOmrD,GAC/CA,EAAO0J,SAAU,EACjB1J,EAAON,KAAOsN,GAAiB3O,IAQnC,IAAI8O,IAAc,iBAqClB3P,GAAmB0C,aAAe,YA6HlC,IAAI0O,IAAc,uDAIdC,GAAmB,+HA+DvBd,IAAuB5nD,GAAKimD,GAASlsD,SA2ErC,IAAI+3D,IAAyB5I,GAAY,EAAG,OACxC6I,GAAyB7I,GAAY,GAAI,WAmH7C7R,GAAmB9tB,cAAgB,sBA+CnC,IAAIoC,IAAOg1B,EACP,kJACA,SAAU/xD,GACN,MAAYtD,UAARsD,EACO1J,KAAK83D,aAEL93D,KAAKwmC,OAAO98B,IAyF/B+tD,GAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOz3D,MAAKi/D,WAAa,MAG7BxH,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAOz3D,MAAK8sE,cAAgB,MAOhC9G,GAAuB,OAAY,YACnCA,GAAuB,QAAY,YACnCA,GAAuB,OAAS,eAChCA,GAAuB,QAAS,eAIhC7P,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BwC,EAAc,IAAUuT,IACxBvT,EAAc,IAAUuT,IACxBvT,EAAc,KAAUkT,GAAWJ,IACnC9S,EAAc,KAAUkT,GAAWJ,IACnC9S,EAAc,OAAUoT,GAAWJ,IACnChT,EAAc,OAAUoT,GAAWJ,IACnChT,EAAc,QAAUqT,GAAWJ,IACnCjT,EAAc,QAAUqT,GAAWJ,IAEnCrS,GAAmB,OAAQ,QAAS,OAAQ,SAAU,SAAUvG,EAAOqK,EAAM1I,EAAQ1M,GACjFoV,EAAKpV,EAAM77C,OAAO,EAAG,IAAM0oD,EAAM9B,KAGrCuG,GAAmB,KAAM,MAAO,SAAUvG,EAAOqK,EAAM1I,EAAQ1M,GAC3DoV,EAAKpV,GAASkK,EAAmBoa,kBAAkBvZ,KA8BvDyE,EAAe,IAAK,EAAG,EAAG,WAI1BtB,EAAa,UAAW,KAIxBwC,EAAc,IAAK6S,IACnBnS,EAAc,IAAK,SAAUrG,EAAOxpD,GAChCA,EAAMsxD,IAA8B,GAApBhG,EAAM9B,GAAS,KASnCyE,EAAe,KAAM,KAAM,GAAI,KAAM,QAIrCtB,EAAa,OAAQ,KAIrBwC,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAC/B9S,EAAc,KAAM,SAAUI,EAAUvyB,GACpC,MAAOuyB,GAAWvyB,EAAO2iC,cAAgB3iC,EAAO0iC,uBAGpD7P,GAAe,IAAK,MAAO0B,IAC3B1B,EAAc,KAAM,SAAUrG,EAAOxpD,GACjCA,EAAMuxD,IAAQjG,EAAM9B,EAAMjuD,MAAM8mE,IAAW,GAAI,KAKnD,IAAIkB,IAAmBjW,EAAW,QAAQ,EAE1CW,GAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU9zB,GACjC,MAAO3jC,MAAK83D,aAAawP,YAAYtnE,KAAM2jC,KAG/C8zB,EAAe,MAAO,EAAG,EAAG,SAAU9zB,GAClC,MAAO3jC,MAAK83D,aAAauP,cAAcrnE,KAAM2jC,KAGjD8zB,EAAe,OAAQ,EAAG,EAAG,SAAU9zB,GACnC,MAAO3jC,MAAK83D,aAAasP,SAASpnE,KAAM2jC,KAG5C8zB,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BtB,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAI3BwC,EAAc,IAAQkT,IACtBlT,EAAc,IAAQkT,IACtBlT,EAAc,IAAQkT,IACtBlT,EAAc,KAAQyT,IACtBzT,EAAc,MAAQyT,IACtBzT,EAAc,OAAQyT,IAEtB7S,GAAmB,KAAM,MAAO,QAAS,SAAUvG,EAAOqK,EAAM1I,GAC5D,GAAIzwB,GAAUywB,EAAOH,QAAQkS,cAAc1T,EAE5B,OAAX9uB,EACAm5B,EAAKvvD,EAAIo2B,EAETywB,EAAOlB,IAAIuZ,eAAiBha,IAIpCuG,GAAmB,IAAK,IAAK,KAAM,SAAUvG,EAAOqK,EAAM1I,EAAQ1M,GAC9DoV,EAAKpV,GAAS6M,EAAM9B,IAsBxB,IAAIia,IAAwB,2DAA2DjkE,MAAM,KAKzFkkE,GAA6B,8BAA8BlkE,MAAM,KAKjEmkE,GAA2B,uBAAuBnkE,MAAM,IAkD5DyuD,GAAe,KAAM,KAAM,GAAI,EAAG,QAClCA,EAAe,KAAM,KAAM,GAAI,EAAG,WAC9B,MAAOz3D,MAAK2/B,QAAU,IAAM,KAShCmgC,GAAS,KAAK,GACdA,GAAS,KAAK,GAId3J,EAAa,OAAQ,KAQrBwC,EAAc,IAAMiP,IACpBjP,EAAc,IAAMiP,IACpBjP,EAAc,IAAMkT,IACpBlT,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAC/B9S,EAAc,KAAMkT,GAAWJ,IAE/BpS,GAAe,IAAK,MAAO4B,IAC3B5B,GAAe,IAAK,KAAM,SAAUrG,EAAOxpD,EAAOmrD,GAC9CA,EAAOyY,MAAQzY,EAAOH,QAAQyL,KAAKjN,GACnC2B,EAAOkL,UAAY7M,IAEvBqG,GAAe,IAAK,MAAO,SAAUrG,EAAOxpD,EAAOmrD,GAC/CnrD,EAAMyxD,IAAQnG,EAAM9B,GACpB2B,EAAOlB,IAAIE,SAAU,GAWzB,IAAI0Z,IAA6B,gBAgB7BC,GAAaxW,EAAW,SAAS,EAErCW,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlCtB,EAAa,SAAU,KAIvBwC,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAC/BpS,GAAe,IAAK,MAAO6B,GAI3B,IAAIqS,IAAezW,EAAW,WAAW,EAEzCW,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlCtB,EAAa,SAAU,KAIvBwC,EAAc,IAAMkT,IACpBlT,EAAc,KAAMkT,GAAWJ,IAC/BpS,GAAe,IAAK,MAAO8B,GAI3B,IAAIqS,IAAe1W,EAAW,WAAW,EAEzCW,GAAe,IAAK,EAAG,EAAG,WACtB,SAAUz3D,KAAK8jC,cAAgB,OAGnC2zB,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,SAAUz3D,KAAK8jC,cAAgB,MAOnCmkC,GAA0B,OAC1BA,GAA0B,QAI1B9R,EAAa,cAAe,MAI5BwC,EAAc,IAAQmT,GAAWN,IACjC7S,EAAc,KAAQmT,GAAWL,IACjC9S,EAAc,MAAQmT,GAAWJ,IACjC/S,EAAc,OAAQsT,IACtB5S,GAAe,IAAK,KAAM,MAAO,QAAS,SAAUrG,EAAOxpD,GACvDA,EAAM4xD,IAAetG,EAAuB,KAAhB,KAAO9B,KAKvC,IAAIya,IAAoB3W,EAAW,gBAAgB,EAEnDW,GAAe,IAAM,EAAG,EAAG,YAC3BA,EAAe,KAAM,EAAG,EAAG,WAY3B,IAAIiW,IAAyBhZ,EAAO7/C,SAEpC64D,IAAuB/4D,IAAei4D,GACtCc,GAAuBnJ,SAAeF,GACtCqJ,GAAuB5yC,MAAeA,GACtC4yC,GAAuBhgD,KAAeA,GACtCggD,GAAuBjJ,MAAeA,GACtCiJ,GAAuB/pC,OAAeA,GACtC+pC,GAAuB/iD,KAAeA,GACtC+iD,GAAuBlI,QAAeA,GACtCkI,GAAuB92D,IAAeugD,EACtCuW,GAAuB3H,UAAeA,GACtC2H,GAAuB5J,QAAeA,GACtC4J,GAAuB3J,SAAeA,GACtC2J,GAAuBhJ,UAAeA,GACtCgJ,GAAuBtnC,OAAeA,GACtCsnC,GAAuBvV,QAAe0N,GACtC6H,GAAuBjnC,KAAeA,GACtCinC,GAAuBlnC,OAAeA,GACtCknC,GAAuB5V,WAAeA,GACtC4V,GAAuBppE,IAAeqoE,GACtCe,GAAuBrpE,IAAeqoE,GACtCgB,GAAuB5H,aAAeA,GACtC4H,GAAuB9gB,IAAeuK,EACtCuW,GAAuBxP,QAAeA,GACtCwP,GAAuBhhD,SAAemgD,GACtCa,GAAuBnkE,QAAeA,GACtCmkE,GAAuB1lE,OAAeA,GACtC0lE,GAAuBxlE,YAAei9D,GACtCuI,GAAuBC,OAAexI,GACtCuI,GAAuB9nE,SAAeA,GACtC8nE,GAAuB9H,KAAeA,GACtC8H,GAAuB5lE,QAAe69D,GAGtC+H,GAAuBzyC,KAAauxC,GACpCkB,GAAuB7Q,WAAaC,GAGpC4Q,GAAuBzO,SAAckH,GACrCuH,GAAuBZ,YAAc1G,GAGrCsH,GAAuBxM,QAAUwM,GAAuBzM,SAAWuF,GAGnEkH,GAAuBtyC,MAAcu/B,EACrC+S,GAAuB/T,YAAciB,EAGrC8S,GAAuBrQ,KAAiBqQ,GAAuBvM,MAAevD,GAC9E8P,GAAuBE,QAAiBF,GAAuBG,SAAehQ,GAC9E6P,GAAuBxH,YAAiBI,GACxCoH,GAAuBI,eAAiBzH,GAGxCqH,GAAuBvyC,KAAa4xC,GACpCW,GAAuB3yC,IAAa2yC,GAAuBtM,KAAmBmG,GAC9EmG,GAAuBxpC,QAAaujC,GACpCiG,GAAuBhI,WAAagC,GACpCgG,GAAuB1yC,UAAaijC,GAGpCyP,GAAuBzpC,KAAOypC,GAAuB/tC,MAAQ2tC,GAG7DI,GAAuB1pC,OAAS0pC,GAAuB9tC,QAAU2tC,GAGjEG,GAAuB3pC,OAAS2pC,GAAuB7tC,QAAU2tC,GAGjEE,GAAuB5pC,YAAc4pC,GAAuB5tC,aAAe2tC,GAG3EC,GAAuBhM,UAAuBW,GAC9CqL,GAAuBra,IAAuBuP,GAC9C8K,GAAuBxL,MAAuBW,GAC9C6K,GAAuBpF,UAAuBxF,GAC9C4K,GAAuB3K,qBAAuBA,GAC9C2K,GAAuBK,MAAuB/K,GAC9C0K,GAAuBM,aAAuB/K,GAC9CyK,GAAuBxK,QAAuBA,GAC9CwK,GAAuBvK,YAAuBA,GAC9CuK,GAAuBtK,MAAuBA,GAC9CsK,GAAuB9M,MAAuBwC,GAG9CsK,GAAuBO,SAAW/F,GAClCwF,GAAuBQ,SAAW/F,GAGlCuF,GAAuBzxC,MAASw/B,EAAU,kDAAmDsR,IAC7FW,GAAuBnT,OAASkB,EAAU,mDAAoDd,GAC9F+S,GAAuB1M,MAASvF,EAAU,iDAAkD+Q,IAC5FkB,GAAuBS,KAAS1S,EAAU,4GAA6GkH,GAEvJ,IAAIyL,IAAkBV,GAUlBW,IACAC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAQXC,IACAC,IAAO,YACPC,GAAO,SACPC,EAAO,aACPC,GAAO,eACPC,IAAO,kBACPC,KAAO,yBAcPC,GAAqB,eAMrBC,GAAiB,KACjBC,GAAsB,UAUtBC,IACAC,OAAS,QACTC,KAAS,SACTviE,EAAK,gBACLzM,EAAK,WACLivE,GAAK,aACLziE,EAAK,UACL0iE,GAAK,WACL5hE,EAAK,QACL6hE,GAAK,UACLlf,EAAK,UACLmf,GAAK,YACLx8D,EAAK,SACLy8D,GAAK,YA8BLC,GAAmBxa,EAAOzgD,SAE9Bi7D,IAAiBtH,UAAkB6F,GACnCyB,GAAiBvL,SAAkBgE,GACnCuH,GAAiBrH,gBAAkBmG,GACnCkB,GAAiBtX,eAAkBA,GACnCsX,GAAiBpH,aAAkByG,GACnCW,GAAiBxX,YAAkBA,GACnCwX,GAAiBnH,SAAkByG,GACnCU,GAAiBnY,QAAkBA,GACnCmY,GAAiB3G,cAAkBkG,GACnCS,GAAiBpP,SAAkBkI,GACnCkH,GAAiBzK,WAAkBuD,GACnCkH,GAAiB/G,cAAkBuG,GACnCQ,GAAiBnF,aAAkB9B,GACnCiH,GAAiB9G,WAAkBA,GACnC8G,GAAiBljB,IAAkBqc,GAGnC6G,GAAiBvV,OAAsBT,EACvCgW,GAAiB/V,QAAesS,GAChCyD,GAAiBtV,YAAsBR,EACvC8V,GAAiB7V,aAAeqS,GAChCwD,GAAiBpV,YAAsBR,EAGvC4V,GAAiBzS,KAAOC,GACxBwS,GAAiBvS,MAAQkP,GACzBqD,GAAiBC,eAAiBpS,GAClCmS,GAAiB9S,eAAiBU,GAGlCoS,GAAiB1I,SAAwBT,GACzCmJ,GAAiBlJ,UAAiBqG,GAClC6C,GAAiBxI,YAAwBP,GACzC+I,GAAiB9I,aAAiBmG,GAClC2C,GAAiBzI,cAAwBR,GACzCiJ,GAAiBhJ,eAAiBoG,GAClC4C,GAAiBpJ,cAAwBO,GAGzC6I,GAAiB7P,KAAO6H,GACxBgI,GAAiBjI,eAAiBwF,GAClCyC,GAAiBhQ,SAAWiI,GAgD5BhS,EAAmC,MAC/Bia,aAAc,uBACdrY,QAAU,SAAUN,GAChB,GAAI9wD,GAAI8wD,EAAS,GACbG,EAAuC,IAA7B1C,EAAMuC,EAAS,IAAM,IAAa,KACrC,IAAN9wD,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAO8wD,GAASG,KAKxBrF,EAAmB1rB,KAAOg1B,EAAU,wDAAyD1F,GAC7F5D,EAAmB8d,SAAWxU,EAAU,gEAAiEzF,EAEzG,IAAI8T,IAAUplE,KAAKwnB,IAuIfgkD,GAAiB5F,GAAO,MACxBiB,GAAiBjB,GAAO,KACxB6F,GAAiB7F,GAAO,KACxB8F,GAAiB9F,GAAO,KACxB+F,GAAiB/F,GAAO,KACxBgG,GAAiBhG,GAAO,KACxBiG,GAAiBjG,GAAO,KACxBkG,GAAiBlG,GAAO,KAaxBmG,GAA6BhG,GAAW,gBACxC5qC,GAAe4qC,GAAW,WAC1B7qC,GAAe6qC,GAAW,WAC1B9qC,GAAe8qC,GAAW,SAC1BrJ,GAAeqJ,GAAW,QAC1BlQ,GAAekQ,GAAW,UAC1BzJ,GAAeyJ,GAAW,SAM1B17C,GAAQrqB,KAAKqqB,MACb+7C,IACA79D,EAAG,GACHzM,EAAG,GACHwM,EAAG,GACHc,EAAG,GACH2iD,EAAG,IAyDH4a,GAAkB3mE,KAAKwnB,IA6BvBwkD,GAA4B3P,GAASlsD,SAEzC67D,IAA0BxkD,IAAiB29C,GAC3C6G,GAA0B/7D,IAAiBq1D,GAC3C0G,GAA0BhkD,SAAiBu9C,GAC3CyG,GAA0BpgD,GAAiBA,GAC3CogD,GAA0BR,eAAiBA,GAC3CQ,GAA0BnF,UAAiBA,GAC3CmF,GAA0BP,UAAiBA,GAC3CO,GAA0BN,QAAiBA,GAC3CM,GAA0BL,OAAiBA,GAC3CK,GAA0BJ,QAAiBA,GAC3CI,GAA0BH,SAAiBA,GAC3CG,GAA0BF,QAAiBA,GAC3CE,GAA0B5oE,QAAiBuiE,GAC3CqG,GAA0BnP,QAAiB2I,GAC3CwG,GAA0B95D,IAAiB4zD,GAC3CkG,GAA0B5wC,aAAiB2wC,GAC3CC,GAA0B7wC,QAAiBA,GAC3C6wC,GAA0B9wC,QAAiBA,GAC3C8wC,GAA0B/wC,MAAiBA,GAC3C+wC,GAA0BtP,KAAiBA,GAC3CsP,GAA0BvP,MAAiBA,GAC3CuP,GAA0BnW,OAAiBA,GAC3CmW,GAA0B1P,MAAiBA,GAC3C0P,GAA0BnL,SAAiBA,GAC3CmL,GAA0BxoE,YAAiBijE,GAC3CuF,GAA0B9qE,SAAiBulE,GAC3CuF,GAA0B/C,OAAiBxC,GAC3CuF,GAA0BlqC,OAAiBA,GAC3CkqC,GAA0B5Y,WAAiBA,GAG3C4Y,GAA0BC,YAAclV,EAAU,sFAAuF0P,IACzIuF,GAA0BjqC,KAAOA,GAIjCgxB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BkB,EAAc,IAAKuT,IACnBvT,EAAc,IAAKwT,IACnB9S,EAAc,IAAK,SAAUrG,EAAOxpD,EAAOmrD,GACvCA,EAAO/5B,GAAK,GAAI91B,MAA6B,IAAxB+hB,WAAWmsC,EAAO,OAE3CqG,EAAc,IAAK,SAAUrG,EAAOxpD,EAAOmrD,GACvCA,EAAO/5B,GAAK,GAAI91B,MAAKgwD,EAAM9B,MAM/Bb,EAAmBye,QAAU,SAE7Bve,EAAgB+K,IAEhBjL,EAAmBr3C,GAAwBszD,GAC3Cjc,EAAmB9tD,IAAwBA,GAC3C8tD,EAAmB7tD,IAAwBA,GAC3C6tD,EAAmBkB,IAAwBF,EAC3ChB,EAAmByT,KAAwBwC,GAC3CjW,EAAmBoI,OAAwBiP,GAC3CrX,EAAmBttD,OAAwBA,EAC3CstD,EAAmB3rB,OAAwBuvB,EAC3C5D,EAAmB0e,QAAwBjd,EAC3CzB,EAAmBhhD,SAAwBuxD,GAC3CvQ,EAAmBpqD,SAAwBA,EAC3CoqD,EAAmBiV,SAAwBsC,GAC3CvX,EAAmBmW,UAAwBD,GAC3ClW,EAAmB2F,WAAwB9B,EAC3C7D,EAAmBqP,WAAwBA,GAC3CrP,EAAmBqI,YAAwBiP,GAC3CtX,EAAmBmV,YAAwBsC,GAC3CzX,EAAmB8D,aAAwBA,EAC3C9D,EAAmBkV,cAAwBsC,GAC3CxX,EAAmBqE,eAAwBA,EAC3CrE,EAAmB2e,sBAAwB/F,EAE3C,IAAIgG,IAAU5e,CAEd,OAAO4e,QAGkBxwE,KAAKX,EAASM,EAAoB,IAAIL,KAI/D,SAASA,EAAQD,EAASM,GAE9B,GAAI8wE,GAAgCC,EAA8BC,GAEjE,SAAUvxE,GAGLsxE,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+Bt3D,MAAM9Z,EAASqxE,GAAiCD,IAAmE5qE,SAAlC8qE,IAAgDrxE,EAAOD,QAAUsxE,KAU7V,WACA,GAAIC,GAAe,KACfC,GAAc,CAwBlB,OAAO,SAAS7lB,GAAY7nD,EAAQoM,GAkIlC,QAAS9G,GAAM6jD,GACb,MAAOA,GAAO9nD,MAAM,UAOtB,QAASssE,GAAkB/mE,GAEzB,GAAmB,iBAAfA,EAAM1C,KAAyB,CAOjC,GAJK0C,EAAMqtC,SAAS25B,WAClBhnE,EAAMqtC,SAAS25B,aAGbhnE,EAAMqtC,SAAS25B,SAAShnE,EAAM1C,MAChC,MAGA0C,GAAMqtC,SAAS25B,SAAShnE,EAAM1C,OAAQ,EAK1C,GAAI2pE,IAAU,CACdjnE,GAAMw9B,gBAAkB,WACtBypC,GAAU,GAIZjnE,EAAMknE,YAAcL,CAIpB,KADA,GAAI3oE,GAAO2oE,EACJ3oE,IAAS+oE,GAAS,CACvB,GAAIE,GAAYjpE,EAAK9E,QAAU8E,EAAK9E,OAAO+tE,UAAUnnE,EAAM1C,KAC3D,IAAI6pE,EACF,IAAK,GAAIjrE,GAAI,EAAGA,EAAIirE,EAAU/qE,SAAW6qE,EAAS/qE,IAChDirE,EAAUjrE,GAAG8D,EAIjB9B,GAAOA,EAAKqC,YA7KhB,GAAIiF,GAAWA,EAAQzF,kBAAmB,EACxC,KAAM,IAAI7G,OAAM,uCAElB,IAAI6Q,GAAWvE,IACbzF,gBAAgB,EAGlB,IAAI3G,EAAOguE,QAAS,CAGlB,GAAI/tE,GAASD,EAETiuE,EAAoB,SAAS/nE,EAASkG,GACxC,MAAOy7C,GAAY,GAAI5nD,GAAOiG,EAASkG,GAAUuE,GAOnD,OALA1Q,GAAOiD,OAAO+qE,EAAmBhuE,GACjCguE,EAAkBD,QAAU,SAAU9nE,EAASkG,GAC7C,MAAOy7C,GAAY,GAAI5nD,GAAO+tE,QAAQ9nE,EAASkG,GAAUuE,IAGpDs9D,EAIT,GAAI/nE,GAAUlG,EAAOkG,OAyJrB,OAxJAA,GAAQlG,OAASA,EAGjBA,EAAOkuE,IAAMluE,EAAOuR,GACpBvR,EAAOmuE,KAAOnuE,EAAO0R,IACrB1R,EAAOouE,MAAQpuE,EAAOurB,KACtBvrB,EAAOquE,SAAWruE,EAAOsR,QAGzBtR,EAAO+tE,aAIP/tE,EAAOkuE,IAAI,eAAgB,SAAUtnE,IAC/B+J,EAAShK,kBAAmB,GAASgK,EAAShK,iBAAmBC,EAAM0nE,cACzE1nE,EAAMD,iBAEJC,EAAM+qC,UACR87B,EAAe7mE,EAAMI,OACrB0mE,GAAc,GAEZ9mE,EAAM0kD,UACRoiB,GAAc,KAUlB1tE,EAAOuR,GAAK,SAAU43C,EAAQolB,GAa5B,MAXAjpE,GAAM6jD,GAAQxjD,QAAQ,SAAUiB,GAC9B,GAAImnE,GAAY/tE,EAAO+tE,UAAUnnE,EAC5BmnE,KACH/tE,EAAO+tE,UAAUnnE,GAASmnE,KAG1B/tE,EAAOkuE,IAAItnE,EAAO+mE,IAEpBI,EAAUjqE,KAAKyqE,KAGVvuE,GAWTA,EAAO0R,IAAM,SAAUy3C,EAAQolB,GAoB7B,MAlBAjpE,GAAM6jD,GAAQxjD,QAAQ,SAAUiB,GAC9B,GAAImnE,GAAY/tE,EAAO+tE,UAAUnnE,EAC7BmnE,KACFA,EAAYQ,EAAUR,EAAUp8D,OAAO,SAAUrI,GAC/C,MAAOA,KAAMilE,OAGXR,EAAU/qE,OAAS,EACrBhD,EAAO+tE,UAAUnnE,GAASmnE,GAI1B/tE,EAAOmuE,KAAKvnE,EAAO+mE,SACZ3tE,GAAO+tE,UAAUnnE,OAKvB5G,GAQTA,EAAOurB,KAAO,SAASijD,EAAW5nE,GAC3B8mE,IACHD,EAAe7mE,EAAMI,QAEvBhH,EAAOouE,MAAMI,EAAW5nE,IAG1B5G,EAAOsR,QAAU,WAEf,GAAIpL,GAAUlG,EAAOkG,cACdA,GAAQlG,OAGfA,EAAO+tE,aAGP/tE,EAAOquE,YAoDFruE,MAOP,SAAS7D,EAAQD,EAASM,GAE9B,GAAIgxE,IAKJ,SAAU3mE,EAAQoI,EAAUw/D,EAAY/rE,GAmBxC,QAASgsE,GAAkBt3D,EAAIu3D,EAASt3D,GACpC,MAAOG,YAAWo3D,EAAOx3D,EAAIC,GAAUs3D,GAY3C,QAASE,GAAeC,EAAK13D,EAAIC,GAC7B,MAAIhU,OAAMC,QAAQwrE,IACdC,EAAKD,EAAKz3D,EAAQD,GAAKC,IAChB,IAEJ,EASX,QAAS03D,GAAK3sE,EAAK4sE,EAAU33D,GACzB,GAAIvU,EAEJ,IAAKV,EAIL,GAAIA,EAAIuD,QACJvD,EAAIuD,QAAQqpE,EAAU33D,OACnB,IAAIjV,EAAIY,SAAWN,EAEtB,IADAI,EAAI,EACGA,EAAIV,EAAIY,QACXgsE,EAASnyE,KAAKwa,EAASjV,EAAIU,GAAIA,EAAGV,GAClCU,QAGJ,KAAKA,IAAKV,GACNA,EAAIE,eAAeQ,IAAMksE,EAASnyE,KAAKwa,EAASjV,EAAIU,GAAIA,EAAGV,GAavE,QAASc,GAAO+rE,EAAM5rB,EAAKM,GAGvB,IAFA,GAAI94C,GAAOnH,OAAOmH,KAAKw4C,GACnBvgD,EAAI,EACDA,EAAI+H,EAAK7H,UACP2gD,GAAUA,GAASsrB,EAAKpkE,EAAK/H,MAAQJ,KACtCusE,EAAKpkE,EAAK/H,IAAMugD,EAAIx4C,EAAK/H,KAE7BA,GAEJ,OAAOmsE,GAUX,QAAStrB,GAAMsrB,EAAM5rB,GACjB,MAAOngD,GAAO+rE,EAAM5rB,GAAK,GAS7B,QAAS6rB,GAAQC,EAAOhP,EAAMnX,GAC1B,GACIomB,GADAC,EAAQlP,EAAKhvD,SAGjBi+D,GAASD,EAAMh+D,UAAYzN,OAAOsI,OAAOqjE,GACzCD,EAAO3rE,YAAc0rE,EACrBC,EAAOE,OAASD,EAEZrmB,GACA9lD,EAAOksE,EAAQpmB,GAUvB,QAAS4lB,GAAOx3D,EAAIC,GAChB,MAAO,YACH,MAAOD,GAAGpB,MAAMqB,EAAStU,YAWjC,QAASwsE,GAASjf,EAAKn9C,GACnB,aAAWm9C,IAAOkf,GACPlf,EAAIt6C,MAAM7C,EAAOA,EAAK,IAAMzQ,EAAYA,EAAWyQ,GAEvDm9C,EASX,QAASmf,GAAYC,EAAMC,GACvB,MAAQD,KAAShtE,EAAaitE,EAAOD,EASzC,QAASE,GAAkB5oE,EAAQmO,EAAOo5D,GACtCQ,EAAKc,EAAS16D,GAAQ,SAASjR,GAC3B8C,EAAOf,iBAAiB/B,EAAMqqE,GAAS,KAU/C,QAASuB,GAAqB9oE,EAAQmO,EAAOo5D,GACzCQ,EAAKc,EAAS16D,GAAQ,SAASjR,GAC3B8C,EAAOP,oBAAoBvC,EAAMqqE,GAAS,KAWlD,QAASnnE,GAAU08C,EAAMz8C,GACrB,KAAOy8C,GAAM,CACT,GAAIA,GAAQz8C,EACR,OAAO,CAEXy8C,GAAOA,EAAK38C,WAEhB,OAAO,EASX,QAAS4oE,GAAMC,EAAKC,GAChB,MAAOD,GAAInsE,QAAQosE,GAAQ,GAQ/B,QAASJ,GAASG,GACd,MAAOA,GAAIrlE,OAAOrF,MAAM,QAU5B,QAAS4qE,GAAQ7sB,EAAK4sB,EAAME,GACxB,GAAI9sB,EAAIx/C,UAAYssE,EAChB,MAAO9sB,GAAIx/C,QAAQosE,EAGnB,KADA,GAAIntE,GAAI,EACDA,EAAIugD,EAAIrgD,QAAQ,CACnB,GAAKmtE,GAAa9sB,EAAIvgD,GAAGqtE,IAAcF,IAAWE,GAAa9sB,EAAIvgD,KAAOmtE,EACtE,MAAOntE,EAEXA,KAEJ,MAAO,GASf,QAAS+C,GAAQzD,GACb,MAAOiB,OAAM8N,UAAUpI,MAAMlM,KAAKuF,EAAK,GAU3C,QAASguE,GAAY/sB,EAAKr9C,EAAKmO,GAK3B,IAJA,GAAIk8D,MACAt7D,KACAjS,EAAI,EAEDA,EAAIugD,EAAIrgD,QAAQ,CACnB,GAAIstD,GAAMtqD,EAAMq9C,EAAIvgD,GAAGkD,GAAOq9C,EAAIvgD,EAC9BotE,GAAQn7D,EAAQu7C,GAAO,GACvB+f,EAAQvsE,KAAKu/C,EAAIvgD,IAErBiS,EAAOjS,GAAKwtD,EACZxtD,IAaJ,MAVIqR,KAIIk8D,EAHCrqE,EAGSqqE,EAAQl8D,KAAK,SAAyBvR,EAAGC,GAC/C,MAAOD,GAAEoD,GAAOnD,EAAEmD,KAHZqqE,EAAQl8D,QAQnBk8D,EASX,QAASC,GAASluE,EAAKmuE,GAKnB,IAJA,GAAIC,GAAQnuE,EACRouE,EAAYF,EAAS,GAAGrpC,cAAgBqpC,EAASxnE,MAAM,GAEvDjG,EAAI,EACDA,EAAI4tE,GAAgB1tE,QAAQ,CAI/B,GAHAwtE,EAASE,GAAgB5tE,GACzBT,EAAO,EAAWmuE,EAASC,EAAYF,EAEnCluE,IAAQD,GACR,MAAOC,EAEXS,KAEJ,MAAOJ,GAQX,QAASiuE,KACL,MAAOC,MAQX,QAASC,GAAoB3qE,GACzB,GAAI4qE,GAAM5qE,EAAQ6qE,aAClB,OAAQD,GAAIE,aAAeF,EAAIG,aAyCnC,QAASC,GAAMC,EAASvrE,GACpB,GAAIoiD,GAAO1rD,IACXA,MAAK60E,QAAUA,EACf70E,KAAKsJ,SAAWA,EAChBtJ,KAAK4J,QAAUirE,EAAQjrE,QACvB5J,KAAK0K,OAASmqE,EAAQ/kE,QAAQglE,YAI9B90E,KAAK+0E,WAAa,SAASC,GACnB/B,EAAS4B,EAAQ/kE,QAAQy1B,QAASsvC,KAClCnpB,EAAKumB,QAAQ+C,IAIrBh1E,KAAKi1E,OAoCT,QAASC,GAAoBL,GACzB,GAAIM,GACAC,EAAaP,EAAQ/kE,QAAQslE,UAajC,OAAO,KAVHD,EADAC,EACOA,EACAC,GACAC,EACAC,GACAC,EACCC,GAGDC,EAFAC,GAIOd,EAAS/lB,GAS/B,QAASA,GAAa+lB,EAAS3C,EAAWlf,GACtC,GAAI4iB,GAAc5iB,EAAM6iB,SAASnvE,OAC7BovE,EAAqB9iB,EAAM+iB,gBAAgBrvE,OAC3C2uC,EAAW68B,EAAY8D,IAAgBJ,EAAcE,IAAuB,EAC5E9mB,EAAWkjB,GAAa+D,GAAYC,KAAkBN,EAAcE,IAAuB,CAE/F9iB,GAAM3d,UAAYA,EAClB2d,EAAMhE,UAAYA,EAEd3Z,IACAw/B,EAAQsB,YAKZnjB,EAAMkf,UAAYA,EAGlBkE,EAAiBvB,EAAS7hB,GAG1B6hB,EAAQ5lD,KAAK,eAAgB+jC,GAE7B6hB,EAAQwB,UAAUrjB,GAClB6hB,EAAQsB,QAAQG,UAAYtjB,EAQhC,QAASojB,GAAiBvB,EAAS7hB,GAC/B,GAAImjB,GAAUtB,EAAQsB,QAClBN,EAAW7iB,EAAM6iB,SACjBU,EAAiBV,EAASnvE,MAGzByvE,GAAQK,aACTL,EAAQK,WAAaC,EAAqBzjB,IAI1CujB,EAAiB,IAAMJ,EAAQO,cAC/BP,EAAQO,cAAgBD,EAAqBzjB,GACnB,IAAnBujB,IACPJ,EAAQO,eAAgB,EAG5B,IAAIF,GAAaL,EAAQK,WACrBE,EAAgBP,EAAQO,cACxBC,EAAeD,EAAgBA,EAAcnpD,OAASipD,EAAWjpD,OAEjEA,EAASylC,EAAMzlC,OAASqpD,EAAUf,EACtC7iB,GAAM6jB,UAAYn3C,KAClBszB,EAAM8jB,UAAY9jB,EAAM6jB,UAAYL,EAAWK,UAE/C7jB,EAAM+jB,MAAQC,EAASL,EAAcppD,GACrCylC,EAAM7rC,SAAW8vD,EAAYN,EAAcppD,GAE3C2pD,EAAef,EAASnjB,GACxBA,EAAMmkB,gBAAkBC,EAAapkB,EAAMjxB,OAAQixB,EAAMhxB,QAEzDgxB,EAAMvuD,MAAQiyE,EAAgBtgD,EAASsgD,EAAcb,SAAUA,GAAY,EAC3E7iB,EAAMqkB,SAAWX,EAAgBY,EAAYZ,EAAcb,SAAUA,GAAY,EAEjF0B,EAAyBpB,EAASnjB,EAGlC,IAAItoD,GAASmqE,EAAQjrE,OACjBkB,GAAUkoD,EAAMrb,SAASjtC,OAAQA,KACjCA,EAASsoD,EAAMrb,SAASjtC,QAE5BsoD,EAAMtoD,OAASA,EAGnB,QAASwsE,GAAef,EAASnjB,GAC7B,GAAIzlC,GAASylC,EAAMzlC,OACfrC,EAASirD,EAAQqB,gBACjBC,EAAYtB,EAAQsB,cACpBnB,EAAYH,EAAQG,eAEpBtjB,EAAMkf,YAAc8D,IAAeM,EAAUpE,YAAc+D,MAC3DwB,EAAYtB,EAAQsB,WAChBtkE,EAAGmjE,EAAUv0C,QAAU,EACvB3uB,EAAGkjE,EAAUt0C,QAAU,GAG3B9W,EAASirD,EAAQqB,aACbrkE,EAAGoa,EAAOpa,EACVC,EAAGma,EAAOna,IAIlB4/C,EAAMjxB,OAAS01C,EAAUtkE,GAAKoa,EAAOpa,EAAI+X,EAAO/X,GAChD6/C,EAAMhxB,OAASy1C,EAAUrkE,GAAKma,EAAOna,EAAI8X,EAAO9X,GAQpD,QAASmkE,GAAyBpB,EAASnjB,GACvC,GAEI0kB,GAAUC,EAAWC,EAAWn6C,EAFhCo6C,EAAO1B,EAAQ2B,cAAgB9kB,EAC/B8jB,EAAY9jB,EAAM6jB,UAAYgB,EAAKhB,SAGvC,IAAI7jB,EAAMkf,WAAagE,KAAiBY,EAAYiB,IAAoBF,EAAKH,WAAatxE,GAAY,CAClG,GAAI27B,GAAS81C,EAAK91C,OAASixB,EAAMjxB,OAC7BC,EAAS61C,EAAK71C,OAASgxB,EAAMhxB,OAE7B90B,EAAI8qE,EAAYlB,EAAW/0C,EAAQC,EACvC21C,GAAYzqE,EAAEiG,EACdykE,EAAY1qE,EAAEkG,EACdskE,EAAYxrD,GAAIhf,EAAEiG,GAAK+Y,GAAIhf,EAAEkG,GAAMlG,EAAEiG,EAAIjG,EAAEkG,EAC3CqqB,EAAY25C,EAAar1C,EAAQC,GAEjCm0C,EAAQ2B,aAAe9kB,MAGvB0kB,GAAWG,EAAKH,SAChBC,EAAYE,EAAKF,UACjBC,EAAYC,EAAKD,UACjBn6C,EAAYo6C,EAAKp6C,SAGrBu1B,GAAM0kB,SAAWA,EACjB1kB,EAAM2kB,UAAYA,EAClB3kB,EAAM4kB,UAAYA,EAClB5kB,EAAMv1B,UAAYA,EAQtB,QAASg5C,GAAqBzjB,GAK1B,IAFA,GAAI6iB,MACArvE,EAAI,EACDA,EAAIwsD,EAAM6iB,SAASnvE,QACtBmvE,EAASrvE,IACL+X,QAASwQ,GAAMikC,EAAM6iB,SAASrvE,GAAG+X,SACjCG,QAASqQ,GAAMikC,EAAM6iB,SAASrvE,GAAGkY,UAErClY,GAGJ,QACIqwE,UAAWn3C,KACXm2C,SAAUA,EACVtoD,OAAQqpD,EAAUf,GAClB9zC,OAAQixB,EAAMjxB,OACdC,OAAQgxB,EAAMhxB,QAStB,QAAS40C,GAAUf,GACf,GAAIU,GAAiBV,EAASnvE,MAG9B,IAAuB,IAAnB6vE,EACA,OACIpjE,EAAG4b,GAAM8mD,EAAS,GAAGt3D,SACrBnL,EAAG2b,GAAM8mD,EAAS,GAAGn3D,SAK7B,KADA,GAAIvL,GAAI,EAAGC,EAAI,EAAG5M,EAAI,EACX+vE,EAAJ/vE,GACH2M,GAAK0iE,EAASrvE,GAAG+X,QACjBnL,GAAKyiE,EAASrvE,GAAGkY,QACjBlY,GAGJ,QACI2M,EAAG4b,GAAM5b,EAAIojE,GACbnjE,EAAG2b,GAAM3b,EAAImjE,IAWrB,QAASyB,GAAYlB,EAAW3jE,EAAGC,GAC/B,OACID,EAAGA,EAAI2jE,GAAa,EACpB1jE,EAAGA,EAAI0jE,GAAa,GAU5B,QAASM,GAAajkE,EAAGC,GACrB,MAAID,KAAMC,EACC6kE,GAGP/rD,GAAI/Y,IAAM+Y,GAAI9Y,GACPD,EAAI,EAAI+kE,GAAiBC,GAE7B/kE,EAAI,EAAIglE,GAAeC,GAUlC,QAASpB,GAAYnnB,EAAIC,EAAIjpD,GACpBA,IACDA,EAAQwxE,GAEZ,IAAInlE,GAAI48C,EAAGjpD,EAAM,IAAMgpD,EAAGhpD,EAAM,IAC5BsM,EAAI28C,EAAGjpD,EAAM,IAAMgpD,EAAGhpD,EAAM,GAEhC,OAAOpC,MAAKssB,KAAM7d,EAAIA,EAAMC,EAAIA,GAUpC,QAAS4jE,GAASlnB,EAAIC,EAAIjpD,GACjBA,IACDA,EAAQwxE,GAEZ,IAAInlE,GAAI48C,EAAGjpD,EAAM,IAAMgpD,EAAGhpD,EAAM,IAC5BsM,EAAI28C,EAAGjpD,EAAM,IAAMgpD,EAAGhpD,EAAM,GAChC,OAA0B,KAAnBpC,KAAK6zE,MAAMnlE,EAAGD,GAAWzO,KAAKsoB,GASzC,QAASsqD,GAAYrmE,EAAOC,GACxB,MAAO8lE,GAAS9lE,EAAI,GAAIA,EAAI,GAAIsnE,IAAmBxB,EAAS/lE,EAAM,GAAIA,EAAM,GAAIunE,IAUpF,QAASpiD,GAASnlB,EAAOC,GACrB,MAAO+lE,GAAY/lE,EAAI,GAAIA,EAAI,GAAIsnE,IAAmBvB,EAAYhmE,EAAM,GAAIA,EAAM,GAAIunE,IAiB1F,QAAS7C,KACL31E,KAAKy4E,KAAOC,GACZ14E,KAAK24E,MAAQC,GAEb54E,KAAK64E,OAAQ,EACb74E,KAAK84E,SAAU,EAEflE,EAAMl7D,MAAM1Z,KAAMyG,WAoEtB,QAAS6uE,KACLt1E,KAAKy4E,KAAOM,GACZ/4E,KAAK24E,MAAQK,GAEbpE,EAAMl7D,MAAM1Z,KAAMyG,WAElBzG,KAAKi5E,MAASj5E,KAAK60E,QAAQsB,QAAQ+C,iBAoEvC,QAASC,KACLn5E,KAAKo5E,SAAWC,GAChBr5E,KAAK24E,MAAQW,GACbt5E,KAAKu5E,SAAU,EAEf3E,EAAMl7D,MAAM1Z,KAAMyG,WAsCtB,QAAS+yE,GAAuBxE,EAAIptE,GAChC,GAAI6xE,GAAMlwE,EAAQyrE,EAAG0E,SACjBl4C,EAAUj4B,EAAQyrE,EAAG2E,eAMzB,OAJI/xE,IAAQquE,GAAYC,MACpBuD,EAAM3F,EAAY2F,EAAI/jE,OAAO8rB,GAAU,cAAc,KAGjDi4C,EAAKj4C,GAiBjB,QAASg0C,KACLx1E,KAAKo5E,SAAWQ,GAChB55E,KAAK65E,aAELjF,EAAMl7D,MAAM1Z,KAAMyG,WA0BtB,QAASqzE,GAAW9E,EAAIptE,GACpB,GAAImyE,GAAaxwE,EAAQyrE,EAAG0E,SACxBG,EAAY75E,KAAK65E,SAGrB,IAAIjyE,GAAQouE,GAAcgE,KAAqC,IAAtBD,EAAWrzE,OAEhD,MADAmzE,GAAUE,EAAW,GAAGE,aAAc,GAC9BF,EAAYA,EAGxB,IAAIvzE,GACAgY,EACAm7D,EAAiBpwE,EAAQyrE,EAAG2E,gBAC5BO,KACAxvE,EAAS1K,KAAK0K,MAQlB,IALA8T,EAAgBu7D,EAAW1kE,OAAO,SAASgrB,GACvC,MAAOv1B,GAAUu1B,EAAM31B,OAAQA,KAI/B9C,IAASouE,GAET,IADAxvE,EAAI,EACGA,EAAIgY,EAAc9X,QACrBmzE,EAAUr7D,EAAchY,GAAGyzE,aAAc,EACzCzzE,GAMR,KADAA,EAAI,EACGA,EAAImzE,EAAejzE,QAClBmzE,EAAUF,EAAenzE,GAAGyzE,aAC5BC,EAAqB1yE,KAAKmyE,EAAenzE,IAIzCoB,GAAQquE,GAAYC,WACb2D,GAAUF,EAAenzE,GAAGyzE,YAEvCzzE,GAGJ,OAAK0zE,GAAqBxzE,QAMtBotE,EAAYt1D,EAAc9I,OAAOwkE,GAAuB,cAAc,GACtEA,GAPJ,OAoBJ,QAASxE,KACLd,EAAMl7D,MAAM1Z,KAAMyG,UAElB,IAAIwrE,GAAUK,EAAOtyE,KAAKiyE,QAASjyE,KACnCA,MAAKqgC,MAAQ,GAAIm1C,GAAWx1E,KAAK60E,QAAS5C,GAC1CjyE,KAAKm6E,MAAQ,GAAIxE,GAAW31E,KAAK60E,QAAS5C,GAyD9C,QAASmI,GAAYvF,EAASrwE,GAC1BxE,KAAK60E,QAAUA,EACf70E,KAAK4sD,IAAIpoD,GAuFb,QAAS61E,GAAkBC,GAEvB,GAAI7G,EAAM6G,EAASC,IACf,MAAOA,GAGX,IAAIC,GAAU/G,EAAM6G,EAASG,IACzBC,EAAUjH,EAAM6G,EAASK,GAG7B,OAAIH,IAAWE,EACJD,GAAqB,IAAME,GAIlCH,GAAWE,EACJF,EAAUC,GAAqBE,GAItClH,EAAM6G,EAASM,IACRA,GAGJC,GA4CX,QAASC,GAAWhrE,GAChB9P,KAAKK,GAAKg0E,IAEVr0E,KAAK60E,QAAU,KACf70E,KAAK8P,QAAUu3C,EAAMv3C,MAAe9P,KAAKm+D,UAGzCn+D,KAAK8P,QAAQy1B,OAAS4tC,EAAYnzE,KAAK8P,QAAQy1B,QAAQ,GAEvDvlC,KAAK+6E,MAAQC,GAEbh7E,KAAKi7E,gBACLj7E,KAAKk7E,eAiOT,QAASC,GAASJ,GACd,MAAIA,GAAQK,GACD,SACAL,EAAQM,GACR,MACAN,EAAQO,GACR,OACAP,EAAQQ,GACR,QAEJ,GAQX,QAASC,GAAa/9C,GAClB,MAAIA,IAAa46C,GACN,OACA56C,GAAa26C,GACb,KACA36C,GAAay6C,GACb,OACAz6C,GAAa06C,GACb,QAEJ,GASX,QAASsD,IAA6BC,EAAiBC,GACnD,GAAI9G,GAAU8G,EAAW9G,OACzB,OAAIA,GACOA,EAAQj+D,IAAI8kE,GAEhBA,EAQX,QAASE,MACLd,EAAWphE,MAAM1Z,KAAMyG,WA6D3B,QAASo1E,MACLD,GAAeliE,MAAM1Z,KAAMyG,WAE3BzG,KAAK87E,GAAK,KACV97E,KAAK+7E,GAAK,KA2Ed,QAASC,MACLJ,GAAeliE,MAAM1Z,KAAMyG,WAsC/B,QAASw1E,MACLnB,EAAWphE,MAAM1Z,KAAMyG,WAEvBzG,KAAKk8E,OAAS,KACdl8E,KAAKm8E,OAAS,KAmElB,QAASC,MACLR,GAAeliE,MAAM1Z,KAAMyG,WA8B/B,QAAS41E,MACLT,GAAeliE,MAAM1Z,KAAMyG,WA0D/B,QAAS61E,MACLxB,EAAWphE,MAAM1Z,KAAMyG,WAIvBzG,KAAKu8E,OAAQ,EACbv8E,KAAKw8E,SAAU,EAEfx8E,KAAKk8E,OAAS,KACdl8E,KAAKm8E,OAAS,KACdn8E,KAAK2Y,MAAQ,EAqGjB,QAAShV,IAAOiG,EAASkG,GAGrB,MAFAA,GAAUA,MACVA,EAAQ2sE,YAActJ,EAAYrjE,EAAQ2sE,YAAa94E,GAAOw6D,SAASue,QAChE,GAAIhL,IAAQ9nE,EAASkG,GAiIhC,QAAS4hE,IAAQ9nE,EAASkG,GACtBA,EAAUA,MAEV9P,KAAK8P,QAAUu3C,EAAMv3C,EAASnM,GAAOw6D,UACrCn+D,KAAK8P,QAAQglE,YAAc90E,KAAK8P,QAAQglE,aAAelrE,EAEvD5J,KAAK28E,YACL38E,KAAKm2E,WACLn2E,KAAKy8E,eAELz8E,KAAK4J,QAAUA,EACf5J,KAAKgzD,MAAQkiB,EAAoBl1E,MACjCA,KAAK48E,YAAc,GAAIxC,GAAYp6E,KAAMA,KAAK8P,QAAQ8sE,aAEtDC,GAAe78E,MAAM,GAErByyE,EAAK3iE,EAAQ2sE,YAAa,SAAS/rE,GAC/B,GAAIirE,GAAa37E,KAAK2U,IAAI,GAAKjE,GAAK,GAAIA,EAAK,IAC7CA,GAAK,IAAMirE,EAAWmB,cAAcpsE,EAAK,IACzCA,EAAK,IAAMirE,EAAWoB,eAAersE,EAAK,KAC3C1Q,MAyOP,QAAS68E,IAAehI,EAASlgE,GAC7B,GAAI/K,GAAUirE,EAAQjrE,OACtB6oE,GAAKoC,EAAQ/kE,QAAQktE,SAAU,SAASx4E,EAAOoT,GAC3ChO,EAAQwE,MAAM4lE,EAASpqE,EAAQwE,MAAOwJ,IAASjD,EAAMnQ,EAAQ,KASrE,QAASy4E,IAAgB3yE,EAAO8J,GAC5B,GAAI8oE,GAAevqE,EAASwqE,YAAY,QACxCD,GAAaE,UAAU9yE,GAAO,GAAM,GACpC4yE,EAAalkD,QAAU5kB,EACvBA,EAAK1J,OAAO2yE,cAAcH,GAr1E9B,GAAI9I,KAAmB,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDkJ,GAAe3qE,EAASM,cAAc,OAEtCigE,GAAgB,WAEhBnkD,GAAQrqB,KAAKqqB,MACb7C,GAAMxnB,KAAKwnB,IACXwT,GAAM56B,KAAK46B,IAwSX40C,GAAY,EAeZiJ,GAAe,wCAEf9H,GAAiB,gBAAkBlrE,GACnC8qE,GAAyBrB,EAASzpE,EAAQ,kBAAoBnE,EAC9DmvE,GAAqBE,IAAiB8H,GAAapuE,KAAKnF,UAAUC,WAElEuzE,GAAmB,QACnBC,GAAiB,MACjBC,GAAmB,QACnBC,GAAoB,SAEpB5F,GAAmB,GAEnB/B,GAAc,EACdgE,GAAa,EACb/D,GAAY,EACZC,GAAe,EAEf+B,GAAiB,EACjBC,GAAiB,EACjBC,GAAkB,EAClBC,GAAe,EACfC,GAAiB,GAEjBuF,GAAuB1F,GAAiBC,GACxC0F,GAAqBzF,GAAeC,GACpCyF,GAAgBF,GAAuBC,GAEvCvF,IAAY,IAAK,KACjBE,IAAmB,UAAW,UA4BlC5D,GAAM//D,WAKFo9D,QAAS,aAKTgD,KAAM,WACFj1E,KAAKy4E,MAAQnF,EAAkBtzE,KAAK4J,QAAS5J,KAAKy4E,KAAMz4E,KAAK+0E,YAC7D/0E,KAAKo5E,UAAY9F,EAAkBtzE,KAAK0K,OAAQ1K,KAAKo5E,SAAUp5E,KAAK+0E,YACpE/0E,KAAK24E,OAASrF,EAAkBiB,EAAoBv0E,KAAK4J,SAAU5J,KAAK24E,MAAO34E,KAAK+0E,aAMxF//D,QAAS,WACLhV,KAAKy4E,MAAQjF,EAAqBxzE,KAAK4J,QAAS5J,KAAKy4E,KAAMz4E,KAAK+0E,YAChE/0E,KAAKo5E,UAAY5F,EAAqBxzE,KAAK0K,OAAQ1K,KAAKo5E,SAAUp5E,KAAK+0E,YACvE/0E,KAAK24E,OAASnF,EAAqBe,EAAoBv0E,KAAK4J,SAAU5J,KAAK24E,MAAO34E,KAAK+0E,aAoT/F,IAAIgJ,KACAC,UAAWhI,GACXiI,UAAWjE,GACXkE,QAASjI,IAGTyC,GAAuB,YACvBE,GAAsB,mBAiB1BhG,GAAQ+C,EAAYf,GAKhB3C,QAAS,SAAmB+C,GACxB,GAAI9C,GAAY6L,GAAgB/I,EAAGptE,KAG/BsqE,GAAY8D,IAA6B,IAAdhB,EAAGlnD,SAC9B9tB,KAAK84E,SAAU,GAGf5G,EAAY8H,IAA2B,IAAbhF,EAAGnnD,QAC7BqkD,EAAY+D,IAIXj2E,KAAK84E,SAAY94E,KAAK64E,QAIvB3G,EAAY+D,KACZj2E,KAAK84E,SAAU,GAGnB94E,KAAKsJ,SAAStJ,KAAK60E,QAAS3C,GACxB2D,UAAWb,GACXe,iBAAkBf,GAClBhD,YAAa0L,GACb/lC,SAAUq9B,OAKtB,IAAImJ,KACAC,YAAapI,GACbqI,YAAarE,GACbsE,UAAWrI,GACXsI,cAAerI,GACfsI,WAAYtI,IAIZuI,IACAC,EAAGlB,GACHmB,EAAGlB,GACHmB,EAAGlB,GACHmB,EAAGlB,IAGH5E,GAAyB,cACzBC,GAAwB,qCAGxBzuE,GAAOu0E,iBACP/F,GAAyB,gBACzBC,GAAwB,6CAiB5BpG,EAAQ0C,EAAmBV,GAKvB3C,QAAS,SAAmB+C,GACxB,GAAIiE,GAAQj5E,KAAKi5E,MACb8F,GAAgB,EAEhBC,EAAsBhK,EAAGptE,KAAK8+B,cAAc/6B,QAAQ,KAAM,IAC1DumE,EAAYiM,GAAkBa,GAC9BhN,EAAcyM,GAAuBzJ,EAAGhD,cAAgBgD,EAAGhD,YAE3DiN,EAAWjN,GAAewL,GAG1B0B,EAAatL,EAAQqF,EAAOjE,EAAGmK,UAAW,YAG1CjN,GAAY8D,KAA8B,IAAdhB,EAAGlnD,QAAgBmxD,GAC9B,EAAbC,IACAjG,EAAMzxE,KAAKwtE,GACXkK,EAAajG,EAAMvyE,OAAS,GAEzBwrE,GAAa+D,GAAYC,MAChC6I,GAAgB,GAIH,EAAbG,IAKJjG,EAAMiG,GAAclK,EAEpBh1E,KAAKsJ,SAAStJ,KAAK60E,QAAS3C,GACxB2D,SAAUoD,EACVlD,iBAAkBf,GAClBhD,YAAaA,EACbr6B,SAAUq9B,IAGV+J,GAEA9F,EAAM7vE,OAAO81E,EAAY,MAKrC,IAAIE,KACAC,WAAYrJ,GACZsJ,UAAWtF,GACXuF,SAAUtJ,GACVuJ,YAAatJ,IAGbmD,GAA6B,aAC7BC,GAA6B,2CAejC1G,GAAQuG,EAAkBvE,GACtB3C,QAAS,SAAmB+C,GACxB,GAAIptE,GAAOw3E,GAAuBpK,EAAGptE,KAOrC,IAJIA,IAASouE,KACTh2E,KAAKu5E,SAAU,GAGdv5E,KAAKu5E,QAAV,CAIA,GAAIG,GAAUF,EAAuBj5E,KAAKP,KAAMg1E,EAAIptE,EAGhDA,IAAQquE,GAAYC,KAAiBwD,EAAQ,GAAGhzE,OAASgzE,EAAQ,GAAGhzE,SAAW,IAC/E1G,KAAKu5E,SAAU,GAGnBv5E,KAAKsJ,SAAStJ,KAAK60E,QAASjtE,GACxBiuE,SAAU6D,EAAQ,GAClB3D,gBAAiB2D,EAAQ,GACzB1H,YAAawL,GACb7lC,SAAUq9B,OAsBtB,IAAIyK,KACAJ,WAAYrJ,GACZsJ,UAAWtF,GACXuF,SAAUtJ,GACVuJ,YAAatJ,IAGb0D,GAAsB,2CAc1BhH,GAAQ4C,EAAYZ,GAChB3C,QAAS,SAAoB+C,GACzB,GAAIptE,GAAO63E,GAAgBzK,EAAGptE,MAC1B8xE,EAAUI,EAAWv5E,KAAKP,KAAMg1E,EAAIptE,EACnC8xE,IAIL15E,KAAKsJ,SAAStJ,KAAK60E,QAASjtE,GACxBiuE,SAAU6D,EAAQ,GAClB3D,gBAAiB2D,EAAQ,GACzB1H,YAAawL,GACb7lC,SAAUq9B,OAmFtBpC,EAAQ8C,EAAiBd,GAOrB3C,QAAS,SAAoB4C,EAAS6K,EAAYC,GAC9C,GAAIV,GAAWU,EAAU3N,aAAewL,GACpCoC,EAAWD,EAAU3N,aAAe0L,EAIxC,IAAIuB,EACAj/E,KAAKm6E,MAAMtB,OAAQ,MAChB,IAAI+G,IAAY5/E,KAAKm6E,MAAMtB,MAC9B,MAIA6G,IAAczJ,GAAYC,MAC1Bl2E,KAAKm6E,MAAMtB,OAAQ,GAGvB74E,KAAKsJ,SAASurE,EAAS6K,EAAYC,IAMvC3qE,QAAS,WACLhV,KAAKqgC,MAAMrrB,UACXhV,KAAKm6E,MAAMnlE,YAInB,IAAI6qE,IAAwB7L,EAASsJ,GAAalvE,MAAO,eACrD0xE,GAAsBD,KAA0Bz5E,EAGhD25E,GAAuB,UACvBlF,GAAoB,OACpBD,GAA4B,eAC5BL,GAAoB,OACpBE,GAAqB,QACrBE,GAAqB,OAczBP,GAAYvlE,WAKR+3C,IAAK,SAASpoD,GAENA,GAASu7E,KACTv7E,EAAQxE,KAAKggF,WAGbF,KACA9/E,KAAK60E,QAAQjrE,QAAQwE,MAAMyxE,IAAyBr7E,GAExDxE,KAAKs6E,QAAU91E,EAAMkiC,cAAcr4B,QAMvCkI,OAAQ,WACJvW,KAAK4sD,IAAI5sD,KAAK60E,QAAQ/kE,QAAQ8sE,cAOlCoD,QAAS,WACL,GAAI1F,KAMJ,OALA7H,GAAKzyE,KAAK60E,QAAQ4H,YAAa,SAASd,GAChC1I,EAAS0I,EAAW7rE,QAAQy1B,QAASo2C,MACrCrB,EAAUA,EAAQ5kE,OAAOimE,EAAWsE,qBAGrC5F,EAAkBC,EAAQrxE,KAAK,OAO1Ci3E,gBAAiB,SAASltB,GAEtB,IAAI8sB,GAAJ,CAIA,GAAInoC,GAAWqb,EAAMrb,SACjBla,EAAYu1B,EAAMmkB,eAGtB,IAAIn3E,KAAK60E,QAAQsB,QAAQgK,UAErB,WADAxoC,GAASttC,gBAIb,IAAIiwE,GAAUt6E,KAAKs6E,QACf8F,EAAU3M,EAAM6G,EAASC,IACzBG,EAAUjH,EAAM6G,EAASK,IACzBH,EAAU/G,EAAM6G,EAASG,GAE7B,OAAI2F,IACC1F,GAAWj9C,EAAYmgD,IACvBpD,GAAW/8C,EAAYogD,GACjB79E,KAAKqgF,WAAW1oC,GAH3B,SAWJ0oC,WAAY,SAAS1oC,GACjB33C,KAAK60E,QAAQsB,QAAQgK,WAAY,EACjCxoC,EAASttC,kBA+DjB,IAAI2wE,IAAiB,EACjBO,GAAc,EACdD,GAAgB,EAChBD,GAAc,EACdiF,GAAmBjF,GACnBD,GAAkB,GAClBmF,GAAe,EAuBnBzF,GAAWjmE,WAKPspD,YAOAvR,IAAK,SAAS98C,GAKV,MAJAlJ,GAAO5G,KAAK8P,QAASA,GAGrB9P,KAAK60E,SAAW70E,KAAK60E,QAAQ+H,YAAYrmE,SAClCvW,MAQX88E,cAAe,SAASpB,GACpB,GAAInJ,EAAemJ,EAAiB,gBAAiB17E,MACjD,MAAOA,KAGX,IAAIi7E,GAAej7E,KAAKi7E,YAMxB,OALAS,GAAkBD,GAA6BC,EAAiB17E,MAC3Di7E,EAAaS,EAAgBr7E,MAC9B46E,EAAaS,EAAgBr7E,IAAMq7E,EACnCA,EAAgBoB,cAAc98E,OAE3BA,MAQXwgF,kBAAmB,SAAS9E,GACxB,MAAInJ,GAAemJ,EAAiB,oBAAqB17E,MAC9CA,MAGX07E,EAAkBD,GAA6BC,EAAiB17E,YACzDA,MAAKi7E,aAAaS,EAAgBr7E,IAClCL,OAQX+8E,eAAgB,SAASrB,GACrB,GAAInJ,EAAemJ,EAAiB,iBAAkB17E,MAClD,MAAOA,KAGX,IAAIk7E,GAAcl7E,KAAKk7E,WAMvB,OALAQ,GAAkBD,GAA6BC,EAAiB17E,MAClB,KAA1C4zE,EAAQsH,EAAaQ,KACrBR,EAAY1zE,KAAKk0E,GACjBA,EAAgBqB,eAAe/8E,OAE5BA,MAQXygF,mBAAoB,SAAS/E,GACzB,GAAInJ,EAAemJ,EAAiB,qBAAsB17E,MACtD,MAAOA,KAGX07E,GAAkBD,GAA6BC,EAAiB17E,KAChE,IAAImJ,GAAQyqE,EAAQ5zE,KAAKk7E,YAAaQ,EAItC,OAHIvyE,GAAQ,IACRnJ,KAAKk7E,YAAY9xE,OAAOD,EAAO,GAE5BnJ,MAOX0gF,mBAAoB,WAChB,MAAO1gF,MAAKk7E,YAAYx0E,OAAS,GAQrCi6E,iBAAkB,SAASjF,GACvB,QAAS17E,KAAKi7E,aAAaS,EAAgBr7E,KAQ/C4uB,KAAM,SAAS+jC,GAIX,QAAS/jC,GAAK2xD,GACVl1B,EAAKmpB,QAAQ5lD,KAAKy8B,EAAK57C,QAAQxF,OAASs2E,EAAYzF,EAASJ,GAAS,IAAK/nB,GAJ/E,GAAItH,GAAO1rD,KACP+6E,EAAQ/6E,KAAK+6E,KAOLM,IAARN,GACA9rD,GAAK,GAGTA,IAGI8rD,GAASM,IACTpsD,GAAK,IAUb4xD,QAAS,SAAS7tB,GACd,MAAIhzD,MAAK8gF,UACE9gF,KAAKivB,KAAK+jC,QAGrBhzD,KAAK+6E,MAAQwF,KAOjBO,QAAS,WAEL,IADA,GAAIt6E,GAAI,EACDA,EAAIxG,KAAKk7E,YAAYx0E,QAAQ,CAChC,KAAM1G,KAAKk7E,YAAY10E,GAAGu0E,OAASwF,GAAevF,KAC9C,OAAO,CAEXx0E,KAEJ,OAAO,GAOX6vE,UAAW,SAASsJ,GAGhB,GAAIoB,GAAiBn6E,KAAW+4E,EAGhC,OAAK1M,GAASjzE,KAAK8P,QAAQy1B,QAASvlC,KAAM+gF,KAOtC/gF,KAAK+6E,OAASuF,GAAmBlF,GAAkBmF,MACnDvgF,KAAK+6E,MAAQC,IAGjBh7E,KAAK+6E,MAAQ/6E,KAAKghF,QAAQD,QAItB/gF,KAAK+6E,OAASQ,GAAcD,GAAgBD,GAAcD,KAC1Dp7E,KAAK6gF,QAAQE,MAfb/gF,KAAKihF,aACLjhF,KAAK+6E,MAAQwF,MAyBrBS,QAAS,SAASrB,KAOlBM,eAAgB,aAOhBgB,MAAO,cA8DXrO,EAAQgJ,GAAgBd,GAKpB3c,UAKI0X,SAAU,GASdqL,SAAU,SAASluB,GACf,GAAImuB,GAAiBnhF,KAAK8P,QAAQ+lE,QAClC,OAA0B,KAAnBsL,GAAwBnuB,EAAM6iB,SAASnvE,SAAWy6E,GAS7DH,QAAS,SAAShuB,GACd,GAAI+nB,GAAQ/6E,KAAK+6E,MACb7I,EAAYlf,EAAMkf,UAElBkP,EAAerG,GAASQ,GAAcD,IACtCnjB,EAAUn4D,KAAKkhF,SAASluB,EAG5B,OAAIouB,KAAiBlP,EAAYgE,KAAiB/d,GACvC4iB,EAAQK,GACRgG,GAAgBjpB,EACnB+Z,EAAY+D,GACL8E,EAAQM,GACNN,EAAQQ,GAGdR,EAAQO,GAFJC,GAIRgF,MAiBf3N,EAAQiJ,GAAeD,IAKnBzd,UACI7zD,MAAO,MACP0gE,UAAW,GACX6K,SAAU,EACVp4C,UAAWqgD,IAGfmC,eAAgB,WACZ,GAAIxiD,GAAYz9B,KAAK8P,QAAQ2tB,UACzB68C,IAOJ,OANI78C,GAAYmgD,IACZtD,EAAQ9yE,KAAKmzE,IAEbl9C,EAAYogD,IACZvD,EAAQ9yE,KAAKizE,IAEVH,GAGX+G,cAAe,SAASruB,GACpB,GAAIljD,GAAU9P,KAAK8P,QACfwxE,GAAW,EACXn6D,EAAW6rC,EAAM7rC,SACjBsW,EAAYu1B,EAAMv1B,UAClBtqB,EAAI6/C,EAAMjxB,OACV3uB,EAAI4/C,EAAMhxB,MAed,OAZMvE,GAAY3tB,EAAQ2tB,YAClB3tB,EAAQ2tB,UAAYmgD,IACpBngD,EAAmB,IAANtqB,EAAW8kE,GAAsB,EAAJ9kE,EAAS+kE,GAAiBC,GACpEmJ,EAAWnuE,GAAKnT,KAAK87E,GACrB30D,EAAWziB,KAAKwnB,IAAI8mC,EAAMjxB,UAE1BtE,EAAmB,IAANrqB,EAAW6kE,GAAsB,EAAJ7kE,EAASglE,GAAeC,GAClEiJ,EAAWluE,GAAKpT,KAAK+7E,GACrB50D,EAAWziB,KAAKwnB,IAAI8mC,EAAMhxB,UAGlCgxB,EAAMv1B,UAAYA,EACX6jD,GAAYn6D,EAAWrX,EAAQk7D,WAAavtC,EAAY3tB,EAAQ2tB,WAG3EyjD,SAAU,SAASluB,GACf,MAAO4oB,IAAe/mE,UAAUqsE,SAAS3gF,KAAKP,KAAMgzD,KAC/ChzD,KAAK+6E,MAAQQ,MAAkBv7E,KAAK+6E,MAAQQ,KAAgBv7E,KAAKqhF,cAAcruB,KAGxF/jC,KAAM,SAAS+jC,GACXhzD,KAAK87E,GAAK9oB,EAAMjxB,OAChB/hC,KAAK+7E,GAAK/oB,EAAMhxB,MAEhB,IAAIvE,GAAY+9C,EAAaxoB,EAAMv1B,UAC/BA,IACAz9B,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAQmzB,EAAWu1B,GAGtDhzD,KAAKgzE,OAAO/jD,KAAK1uB,KAAKP,KAAMgzD,MAcpC4f,EAAQoJ,GAAiBJ,IAKrBzd,UACI7zD,MAAO,QACP0gE,UAAW,EACX6K,SAAU,GAGdoK,eAAgB,WACZ,OAAQ1F,KAGZ2G,SAAU,SAASluB,GACf,MAAOhzD,MAAKgzE,OAAOkO,SAAS3gF,KAAKP,KAAMgzD,KAClCtuD,KAAKwnB,IAAI8mC,EAAMvuD,MAAQ,GAAKzE,KAAK8P,QAAQk7D,WAAahrE,KAAK+6E,MAAQQ,KAG5EtsD,KAAM,SAAS+jC,GAEX,GADAhzD,KAAKgzE,OAAO/jD,KAAK1uB,KAAKP,KAAMgzD,GACR,IAAhBA,EAAMvuD,MAAa,CACnB,GAAI88E,GAAQvuB,EAAMvuD,MAAQ,EAAI,KAAO,KACrCzE,MAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAQi3E,EAAOvuB,OAkB1D4f,EAAQqJ,GAAiBnB,GAKrB3c,UACI7zD,MAAO,QACPurE,SAAU,EACVz8C,KAAM,IACN4xC,UAAW,GAGfiV,eAAgB,WACZ,OAAQpF,KAGZmG,QAAS,SAAShuB,GACd,GAAIljD,GAAU9P,KAAK8P,QACf0xE,EAAgBxuB,EAAM6iB,SAASnvE,SAAWoJ,EAAQ+lE,SAClD4L,EAAgBzuB,EAAM7rC,SAAWrX,EAAQk7D,UACzC0W,EAAY1uB,EAAM8jB,UAAYhnE,EAAQspB,IAM1C,IAJAp5B,KAAKm8E,OAASnpB,GAITyuB,IAAkBD,GAAkBxuB,EAAMkf,WAAa+D,GAAYC,MAAkBwL,EACtF1hF,KAAKihF,YACF,IAAIjuB,EAAMkf,UAAY8D,GACzBh2E,KAAKihF,QACLjhF,KAAKk8E,OAAS9J,EAAkB,WAC5BpyE,KAAK+6E,MAAQuF,GACbtgF,KAAK6gF,WACN/wE,EAAQspB,KAAMp5B,UACd,IAAIgzD,EAAMkf,UAAY+D,GACzB,MAAOqK,GAEX,OAAOC,KAGXU,MAAO,WACHhmE,aAAajb,KAAKk8E,SAGtBjtD,KAAM,SAAS+jC,GACPhzD,KAAK+6E,QAAUuF,KAIfttB,GAAUA,EAAMkf,UAAY+D,GAC5Bj2E,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAQ,KAAM0oD,IAE7ChzD,KAAKm8E,OAAOtF,UAAYn3C,KACxB1/B,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAOtK,KAAKm8E,aAevDvJ,EAAQwJ,GAAkBR,IAKtBzd,UACI7zD,MAAO,SACP0gE,UAAW,EACX6K,SAAU,GAGdoK,eAAgB,WACZ,OAAQ1F,KAGZ2G,SAAU,SAASluB,GACf,MAAOhzD,MAAKgzE,OAAOkO,SAAS3gF,KAAKP,KAAMgzD,KAClCtuD,KAAKwnB,IAAI8mC,EAAMqkB,UAAYr3E,KAAK8P,QAAQk7D,WAAahrE,KAAK+6E,MAAQQ,OAc/E3I,EAAQyJ,GAAiBT,IAKrBzd,UACI7zD,MAAO,QACP0gE,UAAW,GACX0M,SAAU,IACVj6C,UAAWmgD,GAAuBC,GAClChI,SAAU,GAGdoK,eAAgB,WACZ,MAAOpE,IAAchnE,UAAUorE,eAAe1/E,KAAKP,OAGvDkhF,SAAU,SAASluB,GACf,GACI0kB,GADAj6C,EAAYz9B,KAAK8P,QAAQ2tB,SAW7B,OARIA,IAAamgD,GAAuBC,IACpCnG,EAAW1kB,EAAM0kB,SACVj6C,EAAYmgD,GACnBlG,EAAW1kB,EAAM2kB,UACVl6C,EAAYogD,KACnBnG,EAAW1kB,EAAM4kB,WAGd53E,KAAKgzE,OAAOkO,SAAS3gF,KAAKP,KAAMgzD,IACnCv1B,EAAYu1B,EAAMv1B,WAClBu1B,EAAM7rC,SAAWnnB,KAAK8P,QAAQk7D,WAC9B9+C,GAAIwrD,GAAY13E,KAAK8P,QAAQ4nE,UAAY1kB,EAAMkf,UAAY+D,IAGnEhnD,KAAM,SAAS+jC,GACX,GAAIv1B,GAAY+9C,EAAaxoB,EAAMv1B,UAC/BA,IACAz9B,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAQmzB,EAAWu1B,GAGtDhzD,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAO0oD,MA2B9C4f,EAAQ0J,GAAexB,GAKnB3c,UACI7zD,MAAO,MACPurE,SAAU,EACV8L,KAAM,EACN/tD,SAAU,IACVwF,KAAM,IACN4xC,UAAW,EACX4W,aAAc,IAGlB3B,eAAgB,WACZ,OAAQrF,KAGZoG,QAAS,SAAShuB,GACd,GAAIljD,GAAU9P,KAAK8P,QAEf0xE,EAAgBxuB,EAAM6iB,SAASnvE,SAAWoJ,EAAQ+lE,SAClD4L,EAAgBzuB,EAAM7rC,SAAWrX,EAAQk7D,UACzC6W,EAAiB7uB,EAAM8jB,UAAYhnE,EAAQspB,IAI/C,IAFAp5B,KAAKihF,QAEAjuB,EAAMkf,UAAY8D,IAAgC,IAAfh2E,KAAK2Y,MACzC,MAAO3Y,MAAK8hF,aAKhB,IAAIL,GAAiBI,GAAkBL,EAAe,CAClD,GAAIxuB,EAAMkf,WAAa+D,GACnB,MAAOj2E,MAAK8hF,aAGhB,IAAIC,GAAgB/hF,KAAKu8E,MAASvpB,EAAM6jB,UAAY72E,KAAKu8E,MAAQzsE,EAAQ8jB,UAAY,EACjFouD,GAAiBhiF,KAAKw8E,SAAWvF,EAAYj3E,KAAKw8E,QAASxpB,EAAMzlC,QAAUzd,EAAQ8xE,YAEvF5hF,MAAKu8E,MAAQvpB,EAAM6jB,UACnB72E,KAAKw8E,QAAUxpB,EAAMzlC,OAEhBy0D,GAAkBD,EAGnB/hF,KAAK2Y,OAAS,EAFd3Y,KAAK2Y,MAAQ,EAKjB3Y,KAAKm8E,OAASnpB,CAId,IAAIivB,GAAWjiF,KAAK2Y,MAAQ7I,EAAQ6xE,IACpC,IAAiB,IAAbM,EAGA,MAAKjiF,MAAK0gF,sBAGN1gF,KAAKk8E,OAAS9J,EAAkB,WAC5BpyE,KAAK+6E,MAAQuF,GACbtgF,KAAK6gF,WACN/wE,EAAQ8jB,SAAU5zB,MACdu7E,IANA+E,GAUnB,MAAOC,KAGXuB,YAAa,WAIT,MAHA9hF,MAAKk8E,OAAS9J,EAAkB,WAC5BpyE,KAAK+6E,MAAQwF,IACdvgF,KAAK8P,QAAQ8jB,SAAU5zB,MACnBugF,IAGXU,MAAO,WACHhmE,aAAajb,KAAKk8E,SAGtBjtD,KAAM,WACEjvB,KAAK+6E,OAASuF,KACdtgF,KAAKm8E,OAAO8F,SAAWjiF,KAAK2Y,MAC5B3Y,KAAK60E,QAAQ5lD,KAAKjvB,KAAK8P,QAAQxF,MAAOtK,KAAKm8E,YAoBvDx4E,GAAOu+E,QAAU,QAMjBv+E,GAAOw6D,UAOHgkB,WAAW,EAQXvF,YAAamD,GAMbx6C,QAAQ,EASRuvC,YAAa,KAObM,WAAY,KAOZsH,SAEKN,IAAoB72C,QAAQ,KAC5By2C,IAAmBz2C,QAAQ,IAAU,YACrC82C,IAAkB5+C,UAAWmgD,MAC7B/B,IAAiBp+C,UAAWmgD,KAAyB,WACrDtB,KACAA,IAAiBhyE,MAAO,YAAaq3E,KAAM,IAAM,SACjD1F,KAQLe,UAMIoF,WAAY,OAOZC,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,iBAI3B,IAAIC,IAAO,EACPC,GAAc,CA+BlBjR,IAAQ78D,WAMJ+3C,IAAK,SAAS98C,GAaV,MAZAlJ,GAAO5G,KAAK8P,QAASA,GAGjBA,EAAQ8sE,aACR58E,KAAK48E,YAAYrmE,SAEjBzG,EAAQglE,cAER90E,KAAKgzD,MAAMh+C,UACXhV,KAAKgzD,MAAMtoD,OAASoF,EAAQglE,YAC5B90E,KAAKgzD,MAAMiiB,QAERj1E,MASX0mB,KAAM,SAASuc,GACXjjC,KAAKm2E,QAAQ5E,QAAUtuC,EAAQ0/C,GAAcD,IASjDrM,UAAW,SAASsJ,GAChB,GAAIxJ,GAAUn2E,KAAKm2E,OACnB,KAAIA,EAAQ5E,QAAZ,CAKAvxE,KAAK48E,YAAYsD,gBAAgBP,EAEjC,IAAIhE,GACAc,EAAcz8E,KAAKy8E,YAKnBmG,EAAgBzM,EAAQyM,gBAIvBA,GAAkBA,GAAiBA,EAAc7H,MAAQuF,MAC1DsC,EAAgBzM,EAAQyM,cAAgB,KAI5C,KADA,GAAIp8E,GAAI,EACDA,EAAIi2E,EAAY/1E,QACnBi1E,EAAac,EAAYj2E,GAQrB2vE,EAAQ5E,UAAYoR,IACfC,GAAiBjH,GAAciH,IAChCjH,EAAWgF,iBAAiBiC,GAGhCjH,EAAWsF,QAFXtF,EAAWtF,UAAUsJ,IAOpBiD,GAAiBjH,EAAWZ,OAASQ,GAAcD,GAAgBD,MACpEuH,EAAgBzM,EAAQyM,cAAgBjH,GAE5Cn1E,MASRoQ,IAAK,SAAS+kE,GACV,GAAIA,YAAsBb,GACtB,MAAOa,EAIX,KAAK,GADDc,GAAcz8E,KAAKy8E,YACdj2E,EAAI,EAAGA,EAAIi2E,EAAY/1E,OAAQF,IACpC,GAAIi2E,EAAYj2E,GAAGsJ,QAAQxF,OAASqxE,EAChC,MAAOc,GAAYj2E,EAG3B,OAAO,OASXmO,IAAK,SAASgnE,GACV,GAAIpJ,EAAeoJ,EAAY,MAAO37E,MAClC,MAAOA,KAIX,IAAI6iF,GAAW7iF,KAAK4W,IAAI+kE,EAAW7rE,QAAQxF,MAS3C,OARIu4E,IACA7iF,KAAKgY,OAAO6qE,GAGhB7iF,KAAKy8E,YAAYj1E,KAAKm0E,GACtBA,EAAW9G,QAAU70E,KAErBA,KAAK48E,YAAYrmE,SACVolE,GAQX3jE,OAAQ,SAAS2jE,GACb,GAAIpJ,EAAeoJ,EAAY,SAAU37E,MACrC,MAAOA,KAGX,IAAIy8E,GAAcz8E,KAAKy8E,WAKvB,OAJAd,GAAa37E,KAAK4W,IAAI+kE,GACtBc,EAAYrzE,OAAOwqE,EAAQ6I,EAAad,GAAa,GAErD37E,KAAK48E,YAAYrmE,SACVvW,MASXiV,GAAI,SAAS43C,EAAQolB,GACjB,GAAI0K,GAAW38E,KAAK28E,QAKpB,OAJAlK,GAAKc,EAAS1mB,GAAS,SAASviD,GAC5BqyE,EAASryE,GAASqyE,EAASryE,OAC3BqyE,EAASryE,GAAO9C,KAAKyqE,KAElBjyE,MASXoV,IAAK,SAASy3C,EAAQolB,GAClB,GAAI0K,GAAW38E,KAAK28E,QAQpB,OAPAlK,GAAKc,EAAS1mB,GAAS,SAASviD,GACvB2nE,EAGD0K,EAASryE,GAAOlB,OAAOwqE,EAAQ+I,EAASryE,GAAQ2nE,GAAU,SAFnD0K,GAASryE,KAKjBtK,MAQXivB,KAAM,SAAS3kB,EAAO8J,GAEdpU,KAAK8P,QAAQqyE,WACblF,GAAgB3yE,EAAO8J,EAI3B,IAAIuoE,GAAW38E,KAAK28E,SAASryE,IAAUtK,KAAK28E,SAASryE,GAAOmC,OAC5D,IAAKkwE,GAAaA,EAASj2E,OAA3B,CAIA0N,EAAKxM,KAAO0C,EACZ8J,EAAK/J,eAAiB,WAClB+J,EAAKujC,SAASttC,iBAIlB,KADA,GAAI7D,GAAI,EACDA,EAAIm2E,EAASj2E,QAChBi2E,EAASn2E,GAAG4N,GACZ5N,MAQRwO,QAAS,WACLhV,KAAK4J,SAAWizE,GAAe78E,MAAM,GAErCA,KAAK28E,YACL38E,KAAKm2E,WACLn2E,KAAKgzD,MAAMh+C,UACXhV,KAAK4J,QAAU,OA4BvBhD,EAAOjD,IACHqyE,YAAaA,GACbgE,WAAYA,GACZ/D,UAAWA,GACXC,aAAcA,GAEd8E,eAAgBA,GAChBO,YAAaA,GACbD,cAAeA,GACfD,YAAaA,GACbiF,iBAAkBA,GAClBlF,gBAAiBA,GACjBmF,aAAcA,GAEdtI,eAAgBA,GAChBC,eAAgBA,GAChBC,gBAAiBA,GACjBC,aAAcA,GACdC,eAAgBA,GAChBuF,qBAAsBA,GACtBC,mBAAoBA,GACpBC,cAAeA,GAEfpM,QAASA,GACTkD,MAAOA,EACPwF,YAAaA,EAEb5E,WAAYA,EACZG,WAAYA,EACZL,kBAAmBA,EACnBI,gBAAiBA,EACjByD,iBAAkBA,EAElB2B,WAAYA,EACZc,eAAgBA,GAChBkH,IAAKxG,GACLyG,IAAKlH,GACLmH,MAAO3G,GACP4G,MAAOjH,GACPkH,OAAQ9G,GACR+G,MAAOlH,GAEPhnE,GAAIq+D,EACJl+D,IAAKo+D,EACLf,KAAMA,EACNprB,MAAOA,EACPzgD,OAAQA,EACRgsE,QAASA,EACTN,OAAQA,EACR0B,SAAUA,IAGV,YAAcd,IAAiBhzE,EAAoB,KACjDgxE,EAAgC,WAC9B,MAAOvtE,KACTpD,KAAKX,EAASM,EAAqBN,EAASC,KAASqxE,IAAkC9qE,IAAcvG,EAAOD,QAAUsxE,KAChG,mBAAVrxE,IAAyBA,EAAOD,QAC9CC,EAAOD,QAAU+D,GAEjB4G,EAAO4nE,GAAcxuE,IAGtB4G,OAAQoI,SAAU,WAKjB,SAAS9S,EAAQD,EAASM,GAmB9B,QAASyiD,GAAUxnC,GACjBnb,KAAKmkD,QAAS,EAEdnkD,KAAKmxB,KACHhW,UAAWA,GAGbnb,KAAKmxB,IAAIiyD,QAAUzwE,SAASM,cAAc,OAC1CjT,KAAKmxB,IAAIiyD,QAAQt6E,UAAY,cAE7B9I,KAAKmxB,IAAIhW,UAAUtI,YAAY7S,KAAKmxB,IAAIiyD,SAExCpjF,KAAK0D,OAASC,EAAO3D,KAAKmxB,IAAIiyD,SAC9BpjF,KAAK0D,OAAOuR,GAAG,MAAOjV,KAAKqjF,cAAcntD,KAAKl2B,MAG9C,IAAI6V,GAAK7V,KACL6sD,GAAU,MAAO,YAAa,QAAS,QAAS,MAAO,WAAY,UAAW,SAClFA,GAAOxjD,QAAQ,SAAUiB,GACvBuL,EAAGnS,OAAOuR,GAAG3K,EAAO,SAAUA,GAC5BA,EAAMw9B,sBAKV9nC,KAAKsjF,WAAa3/E,EAAOgP,UAAYA,SAASojB,MAAQwtD,iBAAiB,IACvEvjF,KAAKsjF,WAAWruE,GAAG,MAAO,SAAU3K,GAE7Bk5E,EAAWl5E,EAAMI,OAAQyQ,IAC5BtF,EAAG4tE,eAIer9E,SAAlBpG,KAAK0jF,UACP1jF,KAAK0jF,SAAS1uE,UAEhBhV,KAAK0jF,SAAWA,IAGhB1jF,KAAK2jF,YAAc3jF,KAAKyjF,WAAWvtD,KAAKl2B,MAiF1C,QAASwjF,GAAW55E,EAASmB,GAC3B,KAAOnB,GAAS,CACd,GAAIA,IAAYmB,EACd,OAAO,CAETnB,GAAUA,EAAQiB,WAEpB,OAAO,EA9IT,GAAI64E,GAAWxjF,EAAoB,IAC/Bye,EAAUze,EAAoB,IAC9ByD,EAASzD,EAAoB,IAC7BS,EAAOT,EAAoB,EAuD/Bye,GAAQgkC,EAAU9tC,WAGlB8tC,EAAUpmB,QAAU,KAKpBomB,EAAU9tC,UAAUG,QAAU,WAC5BhV,KAAKyjF,aAGLzjF,KAAKmxB,IAAIiyD,QAAQv4E,WAAW1G,YAAYnE,KAAKmxB,IAAIiyD,SAGjDpjF,KAAK0D,OAAS,KACd1D,KAAKsjF,WAAa,MAQpB3gC,EAAU9tC,UAAU+uE,SAAW,WAEzBjhC,EAAUpmB,SACZomB,EAAUpmB,QAAQknD,aAEpB9gC,EAAUpmB,QAAUv8B,KAEpBA,KAAKmkD,QAAS,EACdnkD,KAAKmxB,IAAIiyD,QAAQh1E,MAAMg/B,QAAU,OACjCzsC,EAAKkI,aAAa7I,KAAKmxB,IAAIhW,UAAW,cAEtCnb,KAAKivB,KAAK,UACVjvB,KAAKivB,KAAK,YAIVjvB,KAAK0jF,SAASxtD,KAAK,MAAOl2B,KAAK2jF,cAOjChhC,EAAU9tC,UAAU4uE,WAAa,WAC/BzjF,KAAKmkD,QAAS,EACdnkD,KAAKmxB,IAAIiyD,QAAQh1E,MAAMg/B,QAAU,GACjCzsC,EAAKuI,gBAAgBlJ,KAAKmxB,IAAIhW,UAAW,cACzCnb,KAAK0jF,SAASG,OAAO,MAAO7jF,KAAK2jF,aAEjC3jF,KAAKivB,KAAK,UACVjvB,KAAKivB,KAAK,eAQZ0zB,EAAU9tC,UAAUwuE,cAAgB,SAAU/4E,GAE5CtK,KAAK4jF,WACLt5E,EAAMw9B,mBAsBRjoC,EAAOD,QAAU+iD,GAIb,SAAS9iD,EAAQD,EAASM,GAE9B,QAAS4jF,GAAeC,GACvB,KAAM,IAAIvgF,OAAM,uBAAyBugF,EAAM,MAEhDD,EAAev1E,KAAO,WAAa,UACnCu1E,EAAeE,QAAUF,EACzBjkF,EAAOD,QAAUkkF,EACjBA,EAAezjF,GAAK,IAKhB,SAASR,EAAQD,EAASM,GAE9BL,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAOokF,kBACVpkF,EAAO47D,UAAY,aACnB57D,EAAOqkF,SAEPrkF,EAAOskF,YACPtkF,EAAOokF,gBAAkB,GAEnBpkF,IAMJ,SAASA,EAAQD,EAASM,IAEF,SAASkkF,GAA0BvkF,EAAOD,QAAUwkF,IAEnD7jF,KAAKX,OAI9B,SAASC,EAAQD,EAASM,GAE9B,GAAI8wE,GAAgCC,EAA8BC,GAOjE,SAAUxxE,EAAMC,GAGXsxE,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+Bt3D,MAAM9Z,EAASqxE,GAAiCD,IAAmE5qE,SAAlC8qE,IAAgDrxE,EAAOD,QAAUsxE,KAU7VlxE,KAAM,WAEN,QAAS0jF,GAAS5zE,GAChB,GAMItJ,GANA6D,EAAiByF,GAAWA,EAAQzF,iBAAkB,EAEtD8Q,EAAYrL,GAAWA,EAAQqL,WAAa5Q,OAC5C85E,KACAC,GAAUC,WAAYC,UACtBC,IAIJ,KAAKj+E,EAAI,GAAS,KAALA,EAAUA,IAAMi+E,EAAM7/E,OAAO8/E,aAAal+E,KAAOsvD,KAAK,IAAMtvD,EAAI,IAAKkM,OAAO,EAEzF,KAAKlM,EAAI,GAAS,IAALA,EAASA,IAAMi+E,EAAM7/E,OAAO8/E,aAAal+E,KAAOsvD,KAAKtvD,EAAGkM,OAAO,EAE5E,KAAKlM,EAAI,EAAS,GAALA,EAAUA,IAAMi+E,EAAM,GAAKj+E,IAAMsvD,KAAK,GAAKtvD,EAAGkM,OAAO,EAElE,KAAKlM,EAAI,EAAS,IAALA,EAAWA,IAAMi+E,EAAM,IAAMj+E,IAAMsvD,KAAK,IAAMtvD,EAAGkM,OAAO,EAErE,KAAKlM,EAAI,EAAS,GAALA,EAAUA,IAAMi+E,EAAM,MAAQj+E,IAAMsvD,KAAK,GAAKtvD,EAAGkM,OAAO,EAGrE+xE,GAAM,SAAW3uB,KAAK,IAAKpjD,OAAO,GAClC+xE,EAAM,SAAW3uB,KAAK,IAAKpjD,OAAO,GAClC+xE,EAAM,SAAW3uB,KAAK,IAAKpjD,OAAO,GAClC+xE,EAAM,SAAW3uB,KAAK,IAAKpjD,OAAO,GAClC+xE,EAAM,SAAW3uB,KAAK,IAAKpjD,OAAO,GAElC+xE,EAAY,MAAM3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAU,IAAQ3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAa,OAAK3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAY,MAAM3uB,KAAK,GAAIpjD,OAAO,GAElC+xE,EAAa,OAAK3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAa,OAAK3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAa,OAAK3uB,KAAK,GAAIpjD,MAAOtM,QAClCq+E,EAAW,KAAO3uB,KAAK,GAAIpjD,OAAO,GAClC+xE,EAAiB,WAAK3uB,KAAK,EAAGpjD,OAAO,GACrC+xE,EAAW,KAAW3uB,KAAK,EAAGpjD,OAAO,GACrC+xE,EAAY,MAAU3uB,KAAK,GAAIpjD,OAAO,GACtC+xE,EAAW,KAAW3uB,KAAK,GAAIpjD,OAAO,GACtC+xE,EAAM,WAAgB3uB,KAAK,GAAIpjD,OAAO,GACtC+xE,EAAc,QAAQ3uB,KAAK,GAAIpjD,OAAO,GACtC+xE,EAAgB,UAAM3uB,KAAK,GAAIpjD,OAAO,GAEtC+xE,EAAM,MAAY3uB,KAAK,IAAKpjD,OAAO,GACnC+xE,EAAM,MAAY3uB,KAAK,IAAKpjD,OAAO,GACnC+xE,EAAM,MAAY3uB,KAAK,IAAKpjD,OAAO,GACnC+xE,EAAM,MAAY3uB,KAAK,IAAKpjD,OAAO,EAInC,IAAIiyE,GAAO,SAASr6E,GAAQs6E,EAAYt6E,EAAM,YAC1Cu6E,EAAK,SAASv6E,GAAQs6E,EAAYt6E,EAAM,UAGxCs6E,EAAc,SAASt6E,EAAM1C,GAC/B,GAAoCxB,SAAhCk+E,EAAO18E,GAAM0C,EAAMw6E,SAAwB,CAE7C,IAAK,GADDC,GAAQT,EAAO18E,GAAM0C,EAAMw6E,SACtBt+E,EAAI,EAAGA,EAAIu+E,EAAMr+E,OAAQF,IACTJ,SAAnB2+E,EAAMv+E,GAAGkM,MACXqyE,EAAMv+E,GAAGsU,GAAGxQ,GAEa,GAAlBy6E,EAAMv+E,GAAGkM,OAAmC,GAAlBpI,EAAM8tC,SACvC2sC,EAAMv+E,GAAGsU,GAAGxQ,GAEa,GAAlBy6E,EAAMv+E,GAAGkM,OAAoC,GAAlBpI,EAAM8tC,UACxC2sC,EAAMv+E,GAAGsU,GAAGxQ,EAIM,IAAlBD,GACFC,EAAMD,kBA4FZ,OAtFAg6E,GAAiBnuD,KAAO,SAASxsB,EAAKJ,EAAU1B,GAI9C,GAHaxB,SAATwB,IACFA,EAAO,WAEUxB,SAAfq+E,EAAM/6E,GACR,KAAM,IAAIlG,OAAM,oBAAsBkG,EAEFtD,UAAlCk+E,EAAO18E,GAAM68E,EAAM/6E,GAAKosD,QAC1BwuB,EAAO18E,GAAM68E,EAAM/6E,GAAKosD,UAE1BwuB,EAAO18E,GAAM68E,EAAM/6E,GAAKosD,MAAMtuD,MAAMsT,GAAGxR,EAAUoJ,MAAM+xE,EAAM/6E,GAAKgJ,SAKpE2xE,EAAiBW,QAAU,SAAS17E,EAAU1B,GAC/BxB,SAATwB,IACFA,EAAO,UAET,KAAK,GAAI8B,KAAO+6E,GACVA,EAAMz+E,eAAe0D,IACvB26E,EAAiBnuD,KAAKxsB,EAAIJ,EAAS1B,IAMzCy8E,EAAiBY,OAAS,SAAS36E,GACjC,IAAK,GAAIZ,KAAO+6E,GACd,GAAIA,EAAMz+E,eAAe0D,GAAM,CAC7B,GAAsB,GAAlBY,EAAM8tC,UAAwC,GAApBqsC,EAAM/6E,GAAKgJ,OAAiBpI,EAAMw6E,SAAWL,EAAM/6E,GAAKosD,KACpF,MAAOpsD,EAEJ,IAAsB,GAAlBY,EAAM8tC,UAAyC,GAApBqsC,EAAM/6E,GAAKgJ,OAAkBpI,EAAMw6E,SAAWL,EAAM/6E,GAAKosD,KAC3F,MAAOpsD,EAEJ,IAAIY,EAAMw6E,SAAWL,EAAM/6E,GAAKosD,MAAe,SAAPpsD,EAC3C,MAAOA,GAIb,MAAO,wCAIT26E,EAAiBR,OAAS,SAASn6E,EAAKJ,EAAU1B,GAIhD,GAHaxB,SAATwB,IACFA,EAAO,WAEUxB,SAAfq+E,EAAM/6E,GACR,KAAM,IAAIlG,OAAM,oBAAsBkG,EAExC,IAAiBtD,SAAbkD,EAAwB,CAC1B,GAAI47E,MACAH,EAAQT,EAAO18E,GAAM68E,EAAM/6E,GAAKosD,KACpC,IAAc1vD,SAAV2+E,EACF,IAAK,GAAIv+E,GAAI,EAAGA,EAAIu+E,EAAMr+E,OAAQF,KAC1Bu+E,EAAMv+E,GAAGsU,IAAMxR,GAAYy7E,EAAMv+E,GAAGkM,OAAS+xE,EAAM/6E,GAAKgJ,QAC5DwyE,EAAY19E,KAAK88E,EAAO18E,GAAM68E,EAAM/6E,GAAKosD,MAAMtvD,GAIrD89E,GAAO18E,GAAM68E,EAAM/6E,GAAKosD,MAAQovB,MAGhCZ,GAAO18E,GAAM68E,EAAM/6E,GAAKosD,UAK5BuuB,EAAiBpD,MAAQ,WACvBqD,GAAUC,WAAYC,WAIxBH,EAAiBrvE,QAAU,WACzBsvE,GAAUC,WAAYC,UACtBrpE,EAAUhR,oBAAoB,UAAWw6E,GAAM,GAC/CxpE,EAAUhR,oBAAoB,QAAS06E,GAAI,IAI7C1pE,EAAUxR,iBAAiB,UAAUg7E,GAAK,GAC1CxpE,EAAUxR,iBAAiB,QAAQk7E,GAAG,GAG/BR,EAGT,MAAOX,MAQL,SAAS7jF,EAAQD,EAASM,GAI9B,GAAIilF,GAAkB,SAAUC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIn+E,WAAU,sCAEnHo+E,EAAe,WAAe,QAASC,GAAiB76E,EAAQ5D,GAAS,IAAK,GAAIN,GAAI,EAAGA,EAAIM,EAAMJ,OAAQF,IAAK,CAAE,GAAIg/E,GAAa1+E,EAAMN,EAAIg/E,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMv+E,OAAOw+E,eAAel7E,EAAQ86E,EAAW97E,IAAK87E,IAAiB,MAAO,UAAUH,EAAaQ,EAAYC,GAAiJ,MAA9HD,IAAYN,EAAiBF,EAAYxwE,UAAWgxE,GAAiBC,GAAaP,EAAiBF,EAAaS,GAAqBT,KAEjiBj+E,QAAOw+E,eAAehmF,EAAS,cAC7B4E,OAAO,GAET,IAAI7D,GAAOT,EAAoB,GAO3B6lF,EAAS,WACX,QAASA,KACPZ,EAAgBnlF,KAAM+lF,GAEtB/lF,KAAKoY,QACLpY,KAAKgmF,aAAe,EACpBhmF,KAAKimF,eACLjmF,KAAKkmF,WAAa,EAElBlmF,KAAKmmF,gBAAmB34E,OAAQ,UAAWD,WAAY;AAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aACjKC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAE3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAASF,OAAQ,UAAWD,WAAY,aAC3IC,OAAQ,UAAWD,WAAY,UAAWE,WAAaD,OAAQ,UAAWD,WAAY,WAAaG,OAA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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Images","dotparser","gephiParser","Graph","Error","moment","hammer","Hammer","uuid","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","randomUUID","v4","assignAllKeys","obj","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","undefined","arguments","protoExtend","i","length","other","extend","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataTable","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","getNumberOfColumns","getNumberOfRows","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","start","getCurrent","next","end","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","axis","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","configurationSystem","ConfigurationSystem","configureOptions","setGroups","setItems","_redraw","Core","Validator","printStyle","allOptions","markDirty","refreshItems","errorFound","validate","console","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animation","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","pageX","pageY","centerContainer","itemFromTarget","groupFromTarget","customTime","customTimeFromTarget","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","duration","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","formattingFunction","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeRange","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","steps","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","initTime","anyChanged","dragging","ease","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","pointer","pointerDate","_pointerToDate","zoom","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","_contentToString","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","outerHTML","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","eventParams","drag","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","zeroCrossing","amountOfSteps","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","groupArray","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","ceil","valueAtBottom","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","getData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","multiselect","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","isFirst","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldSubGroupId","oldGroup","_constructByEndArray","itemProps","initialX","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","decimals","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarFunctions","LineFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","combinedDataLeft","combinedDataRight","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","tempGroups","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","pop","childNodes","nodeValue","_interopRequireDefault","__esModule","default","_this","clickToUse","nodes","nodeIndices","edges","edgeIndices","functions","createNode","createEdge","once","eventListeners","onTap","onTouch","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onMouseWheel","onPinch","onMouseMove","onRelease","onContext","view","bindEventListeners","images","_modulesGroups2","_modulesCanvas2","selectionHandler","_modulesSelectionHandler2","interactionHandler","_modulesInteractionHandler2","_modulesView2","renderer","_modulesCanvasRenderer2","physics","_modulesPhysicsEngine2","layoutEngine","_modulesLayoutEngine2","clustering","_modulesClustering2","manipulation","_modulesManipulationSystem2","nodesHandler","_modulesNodesHandler2","edgesHandler","_modulesEdgesHandler2","_modulesConfigurationSystem2","_modulesComponentsAllOptionsJs","pixelRatio","_modulesGroups","_modulesNodesHandler","_modulesEdgesHandler","_modulesPhysicsEngine","_modulesClustering","_modulesCanvasRenderer","_modulesCanvas","_modulesView","_modulesInteractionHandler","_modulesSelectionHandler","_modulesLayoutEngine","_modulesManipulationSystem","_modulesConfigurationSystem","_modulesValidator","_modulesValidator2","Activator","layout","interaction","configure","networkOptions","global","setModuleOptions","activator","_createKeyBinds","_updateVisibleIndices","nodeId","edgeId","_this2","updatePhysicsIndices","_updateValueRange","unselectAll","dotData","DOTToGraph","gephi","gephiData","parseGephi","valueTotal","setValueRange","isActive","active","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","getBoundingBox","getConnectedNodes","getEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","selectNodes","selectEdges","getPosition","releaseNode","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","src","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","setValue","o","addNode","node","graphs","attr","addEdge","edge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","image","shape","convertEdge","dotEdge","graphEdge","arrows","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","optionsObj","inheritColor","fixed","gEdges","gNodes","gEdge","source","gNode","propagating","buf","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","getTime","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","_nodeId","n","rnds","random","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","_seedBytes","mixin","_callbacks","self","removeListener","removeAllListeners","callbacks","cb","listeners","hasListeners","hammerUtil","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","properties","_redrawTimer","set","events","scrollTopMin","customTimes","redrawCount","_initAutoResize","component","appliedOptions","_stopAutoResize","addCustomTime","timestamp","some","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","_classCallCheck","instance","Constructor","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_componentsColorPicker","_componentsColorPicker2","parentModule","defaultContainer","changedOptions","moduleOptions","domElements","colorPicker","wrapper","_clean","config","optionObj","_makeItem","_makeHeader","_handleObject","generateButton","_printOptions","onmouseover","onmouseout","optionsContainer","_push","insertTo","base","_len","_key","div","objectLabel","selectedValue","_update","_makeLabel","input","oninput","checkbox","checked","defaultColor","_showColorPicker","_this3","bodyRect","pickerX","pickerY","setColor","setCallback","colorString","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","solver","enabledPath","enabledValue","_makeColorField","_makeDropdown","_makeRange","_constructOptions","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","checkFields","__type__","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","_isAMomentObject","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","closestMatch","recursive","closestMatchPath","op","levenshteinDistance","prefix","str","matrix","string","boolean","number","nada","undef","inputHandler","isTouching","isFinal","isReleasing","offTouch","offRelease","combinedData","groupLabel","intersections","_getDataIntersections","_getStackedYRange","accumulatedNegative","accumulatedPositive","xpos","coreDistance","amount","resolved","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","prevKey","sideBySide","Groups","defaultIndex","groupsArray","groupIndex","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_componentsNode","_componentsNode2","_componentsSharedLabel","_componentsSharedLabel2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","face","strokeColor","code","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","_properties","positionInitially","changedData","dataChanged","constants","constructorClass","dataArray","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_componentsEdge","_componentsEdge2","EdgesHandler","edgesListeners","scaleFactor","inherit","dashes","hoverWidth","selectionWidth","selfReferenceSize","smooth","dynamic","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","markAllEdgesAsDirty","updateEdgeType","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","via","supportNodes","edgeType","colorDirty","_componentsPhysicsBarnesHutSolver","_componentsPhysicsBarnesHutSolver2","_componentsPhysicsRepulsionSolver","_componentsPhysicsRepulsionSolver2","_componentsPhysicsHierarchicalRepulsionSolver","_componentsPhysicsHierarchicalRepulsionSolver2","_componentsPhysicsSpringSolver","_componentsPhysicsSpringSolver2","_componentsPhysicsHierarchicalSpringSolver","_componentsPhysicsHierarchicalSpringSolver2","_componentsPhysicsCentralGravitySolver","_componentsPhysicsCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","freezeCache","renderTimer","stabilized","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","iterations","updateInterval","onlyDynamicEdges","timestep","initPhysics","init","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","startedStabilization","calculateForces","moveNodes","revert","nodeIds","vx","vy","nodesPresent","vminCorrected","nodeVelocity","_performStep","totalVelocity","solve","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","_componentsNodesCluster","_componentsNodesCluster2","ClusterEngine","clusteredNodes","hubsize","_getHubSize","tyepof","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","_cloneOptions","_cluster","clusters","childNodeId","_getConnectedId","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","objId","amountOfConnections","newEdges","childNode","childKeys","otherNodeId","otherOnTo","clusterEdgeProperties","clusterId","processProperties","childNodesOptions","childEdgesOptions","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","togglePhysics","minX","maxX","minY","maxY","lenght","clusterNodeId","containedNode","cleanup","clusterStack","fromArray","average","averageSquared","hubCounter","largestHub","letiance","standardDeviation","hubThreshold","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedrawRequests","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","w","save","translate","_drawEdges","_drawNodes","controlNodesActive","_drawControlNodes","restore","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","connected","browserType","Canvas","resizeTimer","resizeFunction","hammerFrame","_cleanUp","tabIndex","_bindHammer","pinch","_prepareValue","emitEvent","oldWidth","oldHeight","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","specificNodes","zoomLevel","initialZoom","positionDefined","predefinedPosition","_getRange","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_lockedRedraw","finished","_componentsNavigationHandler","_componentsNavigationHandler2","_componentsPopup","_componentsPopup2","InteractionHandler","navigationHandler","hoverObj","popup","popupObj","popupTimer","dragNodes","dragView","hoverEnabled","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","changedPointers","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdges","selectedNodes","selectObject","selectionObj","xFixed","yFixed","_handleDragStart","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","setPosition","_checkShowPopup","hoverObject","Node","Edge","blurObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","popupTargetType","popupTargetId","setText","_pointerToPositionObject","stillOnObj","overNode","SelectionHandler","selectConnectedEdges","updateSelection","selectionChanged","deselectObject","eventType","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","_getAllEdgesOverlappingWith","clusterSize","_addToHover","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","randomSeed","optionsBackup","hierarchical","levelSeparation","sortMethod","hierarchicalLevels","setupHierarchicalLayout","prevHierarchicalState","adaptAllOptions","nodesArray","isFixed","angle","seededRandom","definedLevel","undefinedLevel","nodeSpacing","_determineLevelsByHubsize","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","positionedNodes","_placeBranchNodes","hubSize","_setLevel","minLevel","_setLevelDirected","parentId","parentLevel","childNodeLevel","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","editNode","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","alert","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","edgeBeingEditedId","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","positions","findBorderPositions","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","_performEditEdge","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","_this4","defaultData","sourceNodeId","targetNodeId","_this5","_this6","CanvasRenderingContext2D","circle","square","s2","ir","triangleDown","star","diamond","roundRect","r2d","ellipse","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","database","wEllipse","hEllipse","ymb","yeb","arrow","xt","yt","xi","yi","xl","yl","xr","yr","dashedLine","x2","y2","pattern","patternLength","slope","distRemaining","patternIndex","dashLength","overlay","_onTapOverlay","bodyHammer","prevent_default","_hasParent","deactivate","keycharm","escListener","activate","unbind","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError","utils_hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","res","hasOwnProp","create_utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","abbr","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","moment_calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","_processing","propagatedHandler","_handled","stopped","firstTarget","_handlers","Manager","PropagatingHammer","_on","_off","_emit","_destroy","pointerType","handler","exportName","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","each","iterator","dest","child","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","property","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","createInputInstance","Type","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","pointersLen","pointers","changedPointersLen","INPUT_START","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","rotation","getRotation","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","getVelocity","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","allow","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","mouse","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","MOBILE_REGEX","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM",2,3,4,5,"MSPointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","compute","getTouchAction","preventDefaults","prevented","hasNone","preventSrc","STATE_RECOGNIZED","STATE_FAILED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","withState","tryEmit","canEmit","inputDataClone","process","reset","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","curRecognizer","existing","Tap","Pan","Swipe","Pinch","Rotate","Press","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","_setSize","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","_setColor","_generateHueCircle","storePrevious","_hide","_updatePicker","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","putImageData","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","newLeft","_sharedLabel","_sharedLabel2","_nodesShapesBox","_nodesShapesBox2","_nodesShapesCircle","_nodesShapesCircle2","_nodesShapesCircularImage","_nodesShapesCircularImage2","_nodesShapesDatabase","_nodesShapesDatabase2","_nodesShapesDiamond","_nodesShapesDiamond2","_nodesShapesDot","_nodesShapesDot2","_nodesShapesEllipse","_nodesShapesEllipse2","_nodesShapesIcon","_nodesShapesIcon2","_nodesShapesImage","_nodesShapesImage2","_nodesShapesSquare","_nodesShapesSquare2","_nodesShapesStar","_nodesShapesStar2","_nodesShapesText","_nodesShapesText2","_nodesShapesTriangle","_nodesShapesTriangle2","_nodesShapesTriangleDown","_nodesShapesTriangleDown2","_Validator","imagelist","grouplist","globalOptions","baseSize","baseFontSize","labelModule","status","groupObj","imageObj","distanceToBorder","sizeDiff","fontDiff","resize","parentOptions","newOptions","parsedColor","_slicedToArray","Symbol","_arr","_n","_e","_s","err","Label","yLine","labelDirty","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_getColor","_getColor2","fontColor","_setAlignment","_setAlignment2","lineJoin","lineCount","strokeText","_processLabel","measureText","newOptionsArray","_edgesBezierEdgeDynamic","_edgesBezierEdgeDynamic2","_edgesBezierEdgeStatic","_edgesBezierEdgeStatic2","_edgesStraightEdge","_edgesStraightEdge2","baseWidth","_setInteractionWidths","changeInType","attachEdge","detachEdge","widthDiff","drawLine","drawArrows","drawLabel","viaNode","drawArrowHead","node1","node2","getPoint","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","percentage","colorsDefined","BarnesHutSolver","barnesHutTree","thetaInversed","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","MAX_VALUE","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","gravity","_inherits","subClass","superClass","__proto__","_get","_x","_x2","_x3","_again","desc","receiver","getOwnPropertyDescriptor","getPrototypeOf","_Node2","_Node3","Cluster","_Node","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","_stopMovement","configureKeyboardBindings","loadNavigationElements","cleanNavigation","_navigationReleaseOverload","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","boundAction","unbindFromRedraw","Popup","doShow","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","webpackContext","req","resolve","webpackPolyfill","paths","__webpack_amd_options__","_utilNodeBase","_utilNodeBase2","Box","_NodeBase","textSize","getTextSize","selectionLineWidth","enableShadow","disableShadow","_utilCircleImageBase","_utilCircleImageBase2","Circle","_CircleImageBase","diameter","_drawRawCircle","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","_distanceToBorder","Database","networkScaleInv","_utilShapeBase","_utilShapeBase2","Diamond","_ShapeBase","_resizeShape","_drawShape","Dot","Ellipse","Icon","_icon","iconTextSpacing","Square","Star","Text","Triangle","TriangleDown","_utilBezierEdgeBase","_utilBezierEdgeBase2","BezierEdgeDynamic","_BezierEdgeBase","setupSupportNode","parentEdgeId","positionBezierNode","quadraticCurveTo","nearNode","_findBorderPositionBezier","x1","y1","x3","y3","_getDistanceToBezierEdge","_x4","_x5","_x6","BezierEdgeStatic","_getViaCoordinates","xVia","yVia","pi","originalAngle","myAngle","_utilEdgeBase","_utilEdgeBase2","StraightEdge","_EdgeBase","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_getDistanceToLine","NodeBase","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","CircleImageBase","ratio","globalAlpha","drawImage","labelDimensions","ShapeBase","sizeMultiplier","_EdgeBase2","_EdgeBase3","BezierEdgeBase","distanceToPoint","difference","minDistance","lastX","lastY","EdgeBase","getColor","getLineWidth","_drawDashedLine","_drawLine","_line","_getCircleData","_getCircleData2","_circle","lineCap","setLineDash","lineDashOffset","_getCircleData3","_getCircleData32","_getCircleData4","_getCircleData42","_findBorderPosition","_findBorderPositionCircle","_getCircleData5","_getCircleData52","colorOptions","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData6","_getCircleData62","px","py","something","u","arrowPos","guideOffset","findBorderPosition","guidePos","_angle","_getCircleData7","_getCircleData72","_length"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 599d8ebd..8b5815a8 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 4.0.0-SNAPSHOT - * @date 2015-04-28 + * @date 2015-05-07 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,26 +22,21 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Images:i(37),dotparser:i(38),gephiParser:i(39)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41),e.Hammer=i(41)},function(t,e,i){var o=i(40);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=n.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!=typeof t[i]&&(t[i]=e)},e.fillIfDefined=function(t,e){for(var i in t)void 0!==e[i]&&"object"!=typeof e[i]&&(t[i]=e[i])},e.protoExtend=function(t,e){for(var i=1;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var s;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(o.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return s=n.exec(t),s?new Date(Number(s[1])):o(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return o(t);if(t instanceof Date)return o(t.valueOf());if(o.isMoment(t))return o(t);if(e.isString(t))return s=n.exec(t),o(s?Number(s[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(o.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return s=n.exec(t),s?new Date(Number(s[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){s=n.exec(t);var r;return r=s?new Date(Number(s[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var n=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;oi;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var o=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)){var n=e.hexToHSV(t),s={h:n.h,s:.45*n.s,v:Math.min(1,1.05*n.v)},r={h:n.h,s:Math.min(1,1.25*n.v),v:.6*n.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var s={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=s.split(t.style.cssText),n=s.split(i),r=e.extend(o,n);t.style.cssText=s.join(r)},e.removeCssText=function(t,e){var i=s.split(t.style.cssText),o=s.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=s.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var o=Object.create(i),n=0;n=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o){for(var n,s,r,a,h=1e4,d=0,l=0,u=t.length-1;u>=l&&h>d;){if(a=Math.floor(.5*(u+l)),n=t[Math.max(0,a-1)][i],s=t[a][i],r=t[Math.min(t.length-1,a+1)][i],s==e)return a;if(e>n&&s>e)return"before"==o?Math.max(0,a-1):a;if(e>s&&r>e)return"before"==o?a:Math.min(t.length-1,a+1);e>s?l=a+1:u=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,o){var n=i-e;return t/=o/2,1>t?n/2*t*t+e:(t--,-n/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;"circle"==o.options.drawPoints.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.options.drawPoints.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*o.options.drawPoints.size),a.setAttributeNS(null,"width",o.options.drawPoints.size),a.setAttributeNS(null,"height",o.options.drawPoints.size)),void 0!==o.options.drawPoints.styles&&a.setAttributeNS(null,"style","vis-"+o.group.options.drawPoints.styles),a.setAttributeNS(null,"class",o.className+" vis-point");var h=e.getSVGElement("text",n,s);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,o,n,s,r,a){if(0!=n){0>n&&(n*=-1,i-=n);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*o),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",s)}}},function(t,e,i){function o(t,e){if(!t||Array.isArray(t)||n.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var o=this._options.type[i];"Date"==o||"ISODate"==o||"ASPDate"==o?this._type[i]="Date":this._type[i]=o}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n=i(1),s=i(5);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=s.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=o.prototype.on,o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=o.prototype.off,o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0;nr;r++)i=s._addItem(t[r]),o.push(i);else if(n.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var u={},c=0,p=h.length;p>c;c++){var f=h[c];u[f]=t.getValue(d,c)}i=s._addItem(u),o.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=s._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],s=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),o.push(e),s.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(n.isDataTable(t))for(var u=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var f={},m=0,v=u.length;v>m;m++){var g=u[m];f[g]=t.getValue(c,m)}h(f)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),o.length&&this._trigger("update",{items:o,data:s},e),i.concat(o)},o.prototype.get=function(t){var e,i,o,s,r=this,a=n.getType(arguments[0]);"String"==a||"Number"==a?(e=arguments[0],o=arguments[1],s=arguments[2]):"Array"==a?(i=arguments[0],o=arguments[1],s=arguments[2]):(o=arguments[0],s=arguments[1]);var h;if(o&&o.returnType){var d=["DataTable","Array","Object"];if(h=-1==d.indexOf(o.returnType)?"Array":o.returnType,s&&h!=n.getType(s))throw new Error('Type of parameter "data" ('+n.getType(s)+") does not correspond with specified options.type ("+o.type+")");if("DataTable"==h&&!n.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else h=s&&"DataTable"==n.getType(s)?"DataTable":"Array";var l,u,c,p,f=o&&o.type||this._options.type,m=o&&o.filter,v=[];if(void 0!=e)l=r._getItem(e,f),m&&!m(l)&&(l=null);else if(void 0!=i)for(c=0,p=i.length;p>c;c++)l=r._getItem(i[c],f),(!m||m(l))&&v.push(l);else for(u in this._data)this._data.hasOwnProperty(u)&&(l=r._getItem(u,f),(!m||m(l))&&v.push(l));if(o&&o.order&&void 0==e&&this._sort(v,o.order),o&&o.fields){var g=o.fields;if(void 0!=e)l=this._filterFields(l,g);else for(c=0,p=v.length;p>c;c++)v[c]=this._filterFields(v[c],g)}if("DataTable"==h){var y=this._getColumnNames(s);if(void 0!=e)r._appendRow(s,y,l);else for(c=0;cc;c++)s.push(v[c]);return s}return v},o.prototype.getIds=function(t){var e,i,o,n,s,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){s=[];for(o in r)r.hasOwnProperty(o)&&(n=this._getItem(o,d),a(n)&&s.push(n));for(this._sort(s,h),e=0,i=s.length;i>e;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=this._getItem(o,d),a(n)&&l.push(n[this._fieldId]));else if(h){s=[];for(o in r)r.hasOwnProperty(o)&&s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=r[o],l.push(n[this._fieldId]));return l},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n=e&&e.filter,s=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],o=i[this._fieldId],t(i,o);else for(o in r)r.hasOwnProperty(o)&&(i=this._getItem(o,s),(!n||n(i))&&t(i,o))},o.prototype.map=function(t,e){var i,o=e&&e.filter,n=e&&e.type||this._options.type,s=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,n),(!o||o(i))&&s.push(t(i,a)));return e&&e.order&&this._sort(s,e.order),s},o.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var o in t)t.hasOwnProperty(o)&&-1!=e.indexOf(o)&&(i[o]=t[o]);else for(var o in t)t.hasOwnProperty(o)&&e.hasOwnProperty(o)&&(i[e[o]]=t[o]);return i},o.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(n.isNumber(t)||n.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||r>o)&&(i=s,o=r)}return i},o.prototype.min=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||o>r)&&(i=s,o=r)}return i},o.prototype.distinct=function(t){var e,i=this._data,o=[],s=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(o[e]==d){l=!0;break}l||void 0===d||(o[r]=d,r++)}if(s)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},o.prototype._appendRow=function(t,e,i){for(var o=t.addRow(),n=0,s=e.length;s>n;n++){var r=e[n];t.setValue(o,n,i[r])}},t.exports=o},function(t,e,i){function o(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(1),s=i(3);o.prototype.setData=function(t){var e,i,o;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var n in this._ids)this._ids.hasOwnProperty(n)&&e.push(n);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,o=e.length;o>i;i++)n=e[i],this._ids[n]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},o=[],n=[],s=0;so;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}o.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},o.extend=function(t,e){var i=new o(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;sthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new c,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(42),a=i(3),h=i(4),d=i(1),l=i(10),u=i(9),c=i(7),p=i(8),f=i(11),m=i(12);r(o.prototype),o.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2, -this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;ot[o][e]&&(i.min=t[o][e]),i.maxt;t++){var f=(t-c)/(p-c),v=240*f,g=this._hsv2rgb(v,1,1);u.strokeStyle=g,u.beginPath(),u.moveTo(h,r+t),u.lineTo(a,r+t),u.stroke()}u.strokeStyle=this.colorAxis,u.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(u.strokeStyle=this.colorAxis,u.fillStyle=this.colorDot,u.beginPath(),u.moveTo(h,r),u.lineTo(a,r),u.lineTo(a-i+e,d),u.lineTo(h,d),u.closePath(),u.fill(),u.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new m(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,n=this._convert3Dto2D(new l(_,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(v.lineWidth=1,o=void 0===this.defaultYStep,i=new m(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,n=this._convert3Dto2D(new l(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(v.lineWidth=1,o=void 0===this.defaultZStep,i=new m(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(s,r,i.getCurrent())),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(t.x-b,t.y),v.stroke(),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();v.lineWidth=1,t=this._convert3Dto2D(new l(s,r,this.zMin)),e=this._convert3Dto2D(new l(s,r,this.zMax)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),v.lineWidth=1,c=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),c=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),v.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke();var x=this.xLabel;x.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-u:this.yMax+u,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(k,n.x,n.y));var M=this.zLabel;M.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new l(s,r,a)),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(M,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,u,c,p,f,m=this.frame.canvas,v=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+n.point.z)/4,u=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),c=1,this.showShadow?(p=Math.min(1+k.x/M/2,1),a=this._hsv2rgb(u,c,p),h=a):(p=1,a=this._hsv2rgb(u,c,p),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,v.lineWidth=d,v.fillStyle=a,v.strokeStyle=h,v.beginPath(),v.moveTo(t.screen.x,t.screen.y),v.lineTo(e.screen.x,e.screen.y),v.lineTo(n.screen.x,n.screen.y),v.lineTo(i.screen.x,i.screen.y),v.closePath(),v.fill(),v.stroke()}}else for(s=0;sc&&(c=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],o.lineWidth=1,o.strokeStyle="blue",o.beginPath(),o.moveTo(t.screen.x,t.screen.y)),e=1;e0&&o.stroke()}},o.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=n(t),this.startMouseY=s(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(o))0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;ib)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(10);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column), -this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(4);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(to&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(){this._current=this._start-this._start%this._step},o.prototype.next=function(){this._current+=this._step},o.prototype.end=function(){return this._current>this._end},t.exports=o},function(t,e,i){function o(t,e,i,h){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof s||i instanceof r)&&i instanceof Object){var p=h;h=i,i=p}var f=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=n.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return f.timeAxis.step.scale},getStep:function(){return f.timeAxis.step.step},toScreen:f._toScreen.bind(f),toGlobalScreen:f._toGlobalScreen.bind(f),toTime:f._toTime.bind(f),toGlobalTime:f._toGlobalTime.bind(f)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new u(this.body),this.components.push(this.customTime),this.itemSet=new c(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){f.emit("click",f.getEventProperties(t))}),this.on("doubletap",function(t){f.emit("doubleClick",f.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){f.emit("contextmenu",f.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(42),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(32);o.prototype=new h,o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var o=this._getDataRange();var n=void 0!=this.options.start?this.options.start:o.start,a=void 0!=this.options.end?this.options.end:o.end;this.setWindow(n,a,{animate:!1})}else this.fit({animate:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},o.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var o=t.min("start");e=o?n.convert(o.start,"Date").valueOf():null;var s=t.max("start");s&&(i=n.convert(s.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?n.convert(r.end,"Date").valueOf():Math.max(i,n.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),o=t.gesture?t.gesture.center.pageX:t.pageX,s=t.gesture?t.gesture.center.pageY:t.pageY,r=o-n.getAbsoluteLeft(this.dom.centerContainer),a=s-n.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),u=this._toTime(r),c=h?h(u,d,l):u,p=n.getTarget(t),f=null;return null!=e?f="item":n.hasParent(p,this.timeAxis.dom.foreground)?f="axis":this.timeAxis2&&n.hasParent(p,this.timeAxis2.dom.foreground)?f="axis":n.hasParent(p,this.itemSet.dom.labelSet)?f="group-label":n.hasParent(p,this.customTime.bar)?f="custom-time":n.hasParent(p,this.currentTime.bar)?f="current-time":n.hasParent(p,this.dom.center)&&(f="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:f,pageX:o,pageY:s,x:r,y:a,time:u,snappedTime:c}},t.exports=o},function(t,e,i){function o(t,e,i,o){if(!(Array.isArray(i)||i instanceof s)&&i instanceof Object){var r=o;o=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=n.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new u(this.body),this.components.push(this.customTime),this.linegraph=new c(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(42),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(43),d=i(35),l=i(26),u=i(27),c=i(34);o.prototype=new h,o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animate:!1})}else this.fit({animate:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.linegraph.setGroups(e)},o.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},o.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},o.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;or?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(o),a=n.getTarget(t),h=null;n.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&n.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":n.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":n.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":n.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":n.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":n.hasParent(a,this.customTime.bar)?h="custom-time":n.hasParent(a,this.currentTime.bar)?h="current-time":n.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,u=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(s)),u.hidden||d.push(u.screenToValue(s)),{event:t,what:h,pageX:e,pageY:i,x:o,y:s,time:r,value:d}},t.exports=o},function(t,e,i){var o=i(40);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var c=0,p=s.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;p>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var v=e.isHidden(t.range.start,t.hiddenDates),g=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==v.hidden&&(y=1==t.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==t.range.endToFront?g.startDate-1:g.endDate+1),(1==v.hidden||1==g.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&a>n){i=!0;break}}if(1==i&&n=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,n){return n=o(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,n)},e.getHiddenDurationBefore=function(t,e,i){var n=0;i=o(i).toDate().valueOf();for(var s=0;s=e.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(t,e,i,o,n,s){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=s,this.setRange(t,e,i,o,n)}o.prototype.setRange=function(t,e,i,o,n){this._start=void 0===n.min?t:n.min,this._end=void 0===n.max?e:n.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,o),this.setFirst(n)},o.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,o=1.2*i,n=t*(o/e),s=Math.round(Math.log(o)/Math.LN10),r=-1,a=Math.pow(10,s),h=0;0>s&&(h=s);for(var d=!1,l=h;Math.abs(l)<=Math.abs(s);l++){a=Math.pow(10,l);for(var u=0;u=n){d=!0,r=u;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},o.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},o.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},o.prototype.hasNext=function(){return this.current>=this.marginStart},o.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},o.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},o.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;o--){if("0"!=i[o]){if("."==i[o]||","==i[o]){i=i.slice(0,o);break}break}i=i.slice(0,o)}}else{var n="",s=i.indexOf("e");if(-1!=s&&(n=i.slice(s),i=i.slice(0,s)),s=Math.max(i.indexOf(","),i.indexOf(".")),-1===s?(0!==t&&(i+="."),s=i.length+t):0!==t&&(s+=t+1),s>i.length)for(var r=s-i.length;r>0;r--)i+="0";else i=i.slice(0,s);i+=n}return i},o.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=o},function(t,e,i){function o(t,e){var i=a().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function s(t,e){return{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}}var r=i(1),a=(i(44),i(40)),h=i(25),d=i(15);o.prototype=new h,o.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,s=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,l=this.end,u="number"==typeof i?i:500,c=(new Date).valueOf(),p=!1,f=function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-c,i=e>u,v=i||null===n?n:r.easeInOutQuad(e,h,n,u),g=i||null===s?s:r.easeInOutQuad(e,l,s,u);m=a._applyRange(v,g),d.updateHiddenDates(a.body,a.options.hiddenDates),p=p||m,m&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:o}),i?p&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:o}):a.animateTimer=setTimeout(f,20)}});return f()}var m=this._applyRange(n,s);if(d.updateHiddenDates(this.body,this.options.hiddenDates),m){var v={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",v),this.body.emitter.emit("rangechanged",v)}},o.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&nd&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},o.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*o,h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},o.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},o.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var o=s({x:t.pageX,y:t.pageY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=s(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=o-n,a=i-n+(this.props.touch.start-(i-n))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var l=d.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(l!=a||u!=h)&&(this.props.touch.start=l,this.props.touch.end=u,this.scaleOffset=1-t.scale,a=l,h=u),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0; - -var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||l!=a)&&(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e,i){var o=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+oe.top}},function(t,e,i){function o(t,e,i,n){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=n,void 0===n&&(this.hiddenDates=[]),this.format=o.FORMAT}var n=i(40),s=i(15),r=i(1);o.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},o.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},o.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=new Date(t.valueOf());if("year"==e){var n=o.getFullYear()+Math.round(o.getMonth()/12);o.setFullYear(Math.round(n/i)*i),o.setMonth(0),o.setDate(0),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("month"==e)o.getDate()>15?(o.setDate(1),o.setMonth(o.getMonth()+1)):o.setDate(1),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.setHours(24*Math.round(o.getHours()/24));break;default:o.setHours(12*Math.round(o.getHours()/12))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.setHours(12*Math.round(o.getHours()/12));break;default:o.setHours(6*Math.round(o.getHours()/6))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:o.setMinutes(60*Math.round(o.getMinutes()/60));break;default:o.setMinutes(30*Math.round(o.getMinutes()/30))}o.setSeconds(0),o.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.setMinutes(5*Math.round(o.getMinutes()/5)),o.setSeconds(0);break;case 5:o.setSeconds(60*Math.round(o.getSeconds()/60));break;default:o.setSeconds(30*Math.round(o.getSeconds()/30))}o.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.setSeconds(5*Math.round(o.getSeconds()/5)),o.setMilliseconds(0);break;case 5:o.setMilliseconds(1e3*Math.round(o.getMilliseconds()/1e3));break;default:o.setMilliseconds(500*Math.round(o.getMilliseconds()/500))}else if("millisecond"==e){var s=i>5?i/2:1;o.setMilliseconds(Math.round(o.getMilliseconds()/s)*s)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(n().add(1,"day"),"day")?" tomorrow":t.isSame(n().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function o(t){return t.isSame(new Date,"month")?" current-month":""}function s(t){return t.isSame(new Date,"year")?" current-year":""}var r=n(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-h"+(d+4)),"h"+d+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"day"+l+" "+u+o(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"year"+c+s(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var n=i(41),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="vis-delete",i.title="Delete this item",new n(i).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},o.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="vis-item-content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].indexr&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}{var n=i(20);i(1)}o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="vis-item-content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=n,this.width=r,i=Math.min(s-n-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?Math.min(-n,s-n-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e){this.options=null,this.props=null}o.prototype.setOptions=function(t){t&&util.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(25),r=i(40),a=i(45);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(25),a=i(40),h=i(45);o.prototype=new r,o.prototype.setOptions=function(t){t&&(s.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-custom-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this))},o.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},o.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=e+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(2),r=i(25),a=i(16); - -o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"==this.options.orientation?o:this.width-e-o;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,n,this.svgElements,this.svg,e,i),n+=i+o));s.cleanupElements(this.svgElements),this.iconsRemoved=!1},o.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(s.prepareElements(this.svgElements),s.cleanupElements(this.svgElements),this.iconsRemoved=!0)},o.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},o.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},o.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},o.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"==s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,o=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=o;var n=(this.dom.frame.offsetHeight-o.deadSpace*(this.dom.frame.offsetHeight/o.marginRange))/((o.marginRange-o.deadSpace)/o.step);this.stepPixels=n;var r=this.height/n,h=0;if(0==this.master){n=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/n-r);for(var d=0;.5*h>d;d++)o.previous();if(r=this.height/n,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=o.marginEnd/o.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)o.next();else if(0>l)for(var d=0;-l>d;d++)o.previous()}}else r+=.25;this.valueAtZero=o.marginEnd;var u,c=0,p=1;void 0!==this.options.format[e]&&(u=this.options.format[e].decimals),this.maxLabelSize=0;for(var f=0;p=0&&this._redrawLabel(f-2,o.getCurrent(u),e,"vis-y-axis vis-major",this.props.majorCharHeight),this._redrawLine(f,e,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(f,e,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==o.current&&(this.zeroCrossing=p),p++}0==this.master?this.conversionFactor=f/(this.valueAtZero-o.current):this.conversionFactor=this.dom.frame.offsetHeight/o.marginRange;var v=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(v=this.props.titleCharHeight);var g=1==this.options.icons?Math.max(this.options.iconWidth,v)+this.options.labelOffsetX+15:v+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-g&&1==this.options.visible?(this.width=this.maxLabelSize+g,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+g),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),t=!1),t},o.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},o.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var f=this.visibleItems[c];f.repositionY(e)}return o},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var o=this;if(i.length>0){var s=i[0].top,r=i[0].top+i[0].height;if(n.forEach(i,function(t){s=Math.min(s,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(o.subgroups[t.data.subgroup].height=Math.max(o.subgroups[t.data.subgroup].height,t.height),o.subgroups[t.data.subgroup].visible=!0)}),s>t.axis){var a=s-t.axis;r-=a,n.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(s=0;sl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;sl})}for(s=0;s=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;rn;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=s.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),u=i(31),c=i(22),p=i(23),f=i(24),m=i(21),v="__ungrouped__",g="__background__";o.prototype=new d,o.types={background:m,box:c,range:f,point:p},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var s=document.createElement("div");s.className="vis-labelset",this.dom.labelSet=s,this._updateUngrouped();var r=new u(g,null,this);r.show(),this.groups[g]=r,this.hammer=new n(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];s.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(s.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&s.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&s.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&s.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;ae&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=s.option.asSize,o=this.options,n=o.orientation,r=!1,a=this.dom.frame,h=o.editable.updateTime||o.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="vis-itemset"+(h?" vis-editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var u=this.stackDirty,c=this._firstGroup(),p={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,f,u),s.forEach(this.groups,function(t){var i=t==c?p:f,o=t.redraw(e,i,u);r=o||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},o.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){{var t,e,i=this.groups[v];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new l(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(s.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),n=e.items[t],s=e._getType(i),r=o.types[s];if(n&&(r&&n instanceof r?e._updateItem(n,i):(e._removeItem(n),n=null)),!n){if(!r)throw new TypeError("rangeoverflow"==s?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}':'Unknown item type "'+s+'"');n=new r(i,e.conversion,e.options),n.id=t,e._addItem(n)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},o.prototype._order=function(){s.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);s.extend(n,{height:null}),o=new l(t,i,e),e.groups[t]=o;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("change",{queue:!0})},o.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!s.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t); - -}},o.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:r})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=s.getAbsoluteLeft(this.dom.frame),a=t.center.x-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=s.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n){e.push(i.id);var s=o._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=s.min&&d<=s.max&&!(a instanceof m)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},o._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.pageY,i=0;ia&&ea)return n}else if(0===i&&e"));this.dom.textArea.innerHTML=o,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){s.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,o=this.options.iconSize,n=.75*this.options.iconSize,r=e+.5*n+3;this.svg.style.width=o+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,o,n),r+=n+this.options.iconSpacing));s.cleanupElements(this.svgElements)}},t.exports=o},function(t,e,i){function o(t,e){this.id=n.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=n.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=n.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var n=i(1),s=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),u=i(33),c=i(47),p="__ungrouped__";o.prototype=new h,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new u(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new u(this.body,this.options.legend,"right",this.options.groups),this.show()},o.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),u={};for(this._getRelevantData(a,u,d,l),this._applySampling(a,u),e=0;ep&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;ro){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=s)d.push(n[l]);e[t[o]]=d}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s0&&(n=this.groups[t[s]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(n.getYRange(o)):h=h.concat(n.getYRange(o)):i[t[s]]=n.getYRange(o,t[s]));c.getStackedBarYRange(a,i,t,"__barchartLeft","left"),c.getStackedBarYRange(h,i,t,"__barchartRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),n},o.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},o.prototype._convertXcoordinates=function(t){for(var e,i,o=[],n=this.body.util.toScreen,s=0;sy;)y++,l=h.getCurrent(),u=h.isMajor(),p=h.getClassName(),m=f,f=this.body.util.toScreen(l),v=f-m,c&&(c.style.width=v+"px"),this.options.showMinorLabels&&this._repaintMinorText(f,h.getLabelMinor(),t,p),u&&this.options.showMajorLabels?(f>0&&(void 0==g&&(g=f),this._repaintMajorText(f,h.getLabelMajor(),t,p)),c=this._repaintMajorLine(f,t,p)):c=this._repaintMinorLine(f,t,p),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),w=h.getLabelMajor(b),_=w.length*(this.props.majorCharWidth||10)+10;(void 0==g||g>_)&&this._repaintMajorText(0,w,t,p)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",n.style.left=t+"px",n.className="vis-text vis-minor "+o},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",n.style.left=t+"px"},o.prototype._repaintMinorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top=n.majorLabelHeight+"px":o.style.top=this.body.domProps.top.height+"px",o.style.height=n.minorLineHeight+"px",o.style.left=t-n.minorLineWidth/2+"px",o.className="vis-grid vis-vertical vis-minor "+i,o},o.prototype._repaintMajorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top="0":o.style.top=this.body.domProps.top.height+"px",o.style.left=t-n.majorLineWidth/2+"px",o.style.height=n.majorLineHeight+"px",o.className="vis-grid vis-vertical vis-major "+i,o},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=o},function(t,e,i){function o(t,e,i){var n=this;if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={clickToUse:!1},R.extend(this.options,this.defaultOptions),this.body={nodes:{},nodeIndices:[],edges:{},edgeIndices:[],data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},container:t,view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners();var s=new B(function(){return n.body.emitter.emit("_requestRedraw")});this.groups=new r["default"],this.canvas=new y["default"](this.body),this.selectionHandler=new M["default"](this.body,this.canvas),this.interactionHandler=new x["default"](this.body,this.canvas,this.selectionHandler), -this.view=new w["default"](this.body,this.canvas),this.renderer=new v["default"](this.body,this.canvas),this.physics=new c["default"](this.body),this.layoutEngine=new D["default"](this.body),this.clustering=new f["default"](this.body),this.manipulation=new C["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new h["default"](this.body,s,this.groups,this.layoutEngine),this.edgesHandler=new l["default"](this.body,s,this.groups),this.configurationSystem=new S["default"](this),this.canvas._create(),this.setOptions(i),this.setData(e)}var n=function(t){return t&&t.__esModule?t:{"default":t}},s=i(57),r=n(s),a=i(58),h=n(a),d=i(59),l=n(d),u=i(60),c=n(u),p=i(61),f=n(p),m=i(62),v=n(m),g=i(63),y=n(g),b=i(64),w=n(b),_=i(65),x=n(_),k=i(66),M=n(k),O=i(67),D=n(O),T=i(68),C=n(T),E=i(69),S=n(E),P=i(70),I=n(P),N=i(71),A=n(N);i(72);var z=i(42),R=(i(41),i(1)),L=(i(3),i(4),i(38)),F=i(39),B=i(37),j=i(52);z(o.prototype),o.prototype.setOptions=function(t){if(void 0!==t){var e=I["default"].validate(t,A["default"]);e===!0&&(t={},console.log("%cErrors have been found in the supplied options object. None of the options will be used.",P.printStyle)),t=this.layoutEngine.setOptions(t.layout,t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.canvas.setOptions(t.canvas),this.renderer.setOptions(t.rendering),this.view.setOptions(t.view),this.interactionHandler.setOptions(t.interaction),this.selectionHandler.setOptions(t.selection),this.clustering.setOptions(t.clustering),this.manipulation.setOptions(t.manipulation),this.configurationSystem.setOptions(t),void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new j(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},o.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(o)},o.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(e){t._updateVisibleIndices(),t.physics.updatePhysicsIndices(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation")})},o.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var e=L.DOTToGraph(t.dot);return void this.setData(e)}}else if(t&&t.gephi){if(t&&t.gephi){var i=F.parseGephi(t.gephi);return void this.setData(i)}}else this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0);this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("initPhysics")},o.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),R.recursiveDOMDelete(this.body.container)},o.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.setSize=function(){this.canvas.setSize.apply(this.canvas,arguments)},o.prototype.canvasToDOM=function(){this.canvas.canvasToDOM.apply(this.canvas,arguments)},o.prototype.DOMtoCanvas=function(){this.canvas.setSize.DOMtoCanvas(this.canvas,arguments)},o.prototype.findNode=function(){this.clustering.findNode.apply(this.clustering,arguments)},o.prototype.isCluster=function(){this.clustering.isCluster.apply(this.clustering,arguments)},o.prototype.openCluster=function(){this.clustering.openCluster.apply(this.clustering,arguments)},o.prototype.cluster=function(){this.clustering.cluster.apply(this.clustering,arguments)},o.prototype.clusterByConnection=function(){this.clustering.clusterByConnection.apply(this.clustering,arguments)},o.prototype.clusterByHubsize=function(){this.clustering.clusterByHubsize.apply(this.clustering,arguments)},o.prototype.clusterOutliers=function(){this.clustering.clusterOutliers.apply(this.clustering,arguments)},o.prototype.getSeed=function(){this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},o.prototype.enableEditMode=function(){this.manipulation.enableEditMode.apply(this.manipulation,arguments)},o.prototype.disableEditMode=function(){this.manipulation.disableEditMode.apply(this.manipulation,arguments)},o.prototype.addNodeMode=function(){this.manipulation.addNodeMode.apply(this.manipulation,arguments)},o.prototype.editNodeMode=function(){this.manipulation.editNodeMode.apply(this.manipulation,arguments)},o.prototype.addEdgeMode=function(){this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},o.prototype.editEdgeMode=function(){this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},o.prototype.deleteSelected=function(){this.manipulation.deleteSelected.apply(this.manipulation,arguments)},o.prototype.getPositions=function(){this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},o.prototype.storePositions=function(){this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},o.prototype.getBoundingBox=function(){this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},o.prototype.getConnectedNodes=function(){this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments)},o.prototype.getEdges=function(){this.nodesHandler.getEdges.apply(this.nodesHandler,arguments)},o.prototype.startSimulation=function(){this.physics.startSimulation.apply(this.physics,arguments)},o.prototype.stopSimulation=function(){this.physics.stopSimulation.apply(this.physics,arguments)},o.prototype.stabilize=function(){this.physics.stabilize.apply(this.physics,arguments)},o.prototype.getSelection=function(){this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},o.prototype.getSelectedNodes=function(){this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},o.prototype.getSelectedEdges=function(){this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},o.prototype.getNodeAt=function(){this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments)},o.prototype.getEdgeAt=function(){this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments)},o.prototype.selectNodes=function(){this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},o.prototype.selectEdges=function(){this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},o.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments)},o.prototype.getScale=function(){this.view.getScale.apply(this.view,arguments)},o.prototype.getPosition=function(){this.view.getPosition.apply(this.view,arguments)},o.prototype.fit=function(){this.view.fit.apply(this.view,arguments)},o.prototype.moveTo=function(){this.view.moveTo.apply(this.view,arguments)},o.prototype.focusOnNode=function(){this.view.focusOnNode.apply(this.view,arguments)},o.prototype.releaseNode=function(){this.view.releaseNode.apply(this.view,arguments)},t.exports=o},function(t,e,i){function o(t){this.images={},this.imageBroken={},this.callback=t}o.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var o=this;i=new Image,i.onload=function(){0===this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),o.callback&&(o.images[t]=i,o.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,o.callback&&o.callback(this)):o.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,o.callback&&o.callback(this)):(console.error("Could not load image:",t),this.src=e,o.imageBroken[t]=!0)},i.src=t}return i},t.exports=o},function(t,e,i){function o(t){return C=t,f()}function n(){E=0,S=C.charAt(0)}function s(){E++,S=C.charAt(E)}function r(){return C.charAt(E+1)}function a(t){return N.test(t)}function h(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function d(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=h(n.attr,t.node))),i=s.length-1;i>=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(I=D.NULL,P="";" "===S||" "===S||"\n"===S||"\r"===S;)s();do{var t=!1;if("#"===S){for(var e=E-1;" "===C.charAt(e)||" "===C.charAt(e);)e--;if("\n"===C.charAt(e)||""===C.charAt(e)){for(;""!=S&&"\n"!=S;)s();t=!0}}if("/"===S&&"/"===r()){for(;""!=S&&"\n"!=S;)s();t=!0}if("/"===S&&"*"===r()){for(;""!=S;){if("*"===S&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===S||" "===S||"\n"===S||"\r"===S;)s()}while(t);if(""===S)return void(I=D.DELIMITER);var i=S+r();if(T[i])return I=D.DELIMITER,P=i,s(),void s();if(T[S])return I=D.DELIMITER,P=S,void s();if(a(S)||"-"===S){for(P+=S,s();a(S);)P+=S,s();return"false"===P?P=!1:"true"===P?P=!0:isNaN(Number(P))||(P=Number(P)),void(I=D.IDENTIFIER)}if('"'===S){for(s();""!=S&&('"'!=S||'"'===S&&'"'===r());)P+=S,'"'===S&&s(),s();if('"'!=S)throw x('End of string " expected');return s(),void(I=D.IDENTIFIER)}for(I=D.UNKNOWN;""!=S;)P+=S,s();throw new SyntaxError('Syntax error in part "'+k(P,30)+'"')}function f(){var t={};if(n(),p(),"strict"===P&&(t.strict=!0,p()),("graph"===P||"digraph"===P)&&(t.type=P,p()),I===D.IDENTIFIER&&(t.id=P,p()),"{"!=P)throw x("Angle bracket { expected");if(p(),m(t),"}"!=P)throw x("Angle bracket } expected");if(p(),""!==P)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==P&&"}"!=P;)v(t),";"===P&&p()}function v(t){var e=g(t);if(e)return void w(t,e);var i=y(t);if(!i){if(I!=D.IDENTIFIER)throw x("Identifier expected");var o=P;if(p(),"="===P){if(p(),I!=D.IDENTIFIER)throw x("Identifier expected");t[o]=P,p()}else b(t,o)}}function g(t){var e=null;if("subgraph"===P&&(e={},e.type="subgraph",p(),I===D.IDENTIFIER&&(e.id=P,p())),"{"===P){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=P)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===P?(p(),t.node=_(),"node"):"edge"===P?(p(),t.edge=_(),"edge"):"graph"===P?(p(),t.graph=_(),"graph"):null}function b(t,e){var i={id:e},o=_();o&&(i.attr=o),l(t,i),w(t,e)}function w(t,e){for(;"->"===P||"--"===P;){var i,o=P;p();var n=g(t);if(n)i=n;else{if(I!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=P,l(t,{id:i}),p()}var s=_(),r=c(t,e,i,o,s);u(t,r),e=i}}function _(){for(var t=null;"["===P;){for(p(),t={};""!==P&&"]"!=P;){if(I!=D.IDENTIFIER)throw x("Attribute name expected");var e=P;if(p(),"="!=P)throw x("Equal sign = expected");if(p(),I!=D.IDENTIFIER)throw x("Attribute value expected");var i=P;d(t,e,i),p(),","==P&&p()}if("]"!=P)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(P,30)+'" (char '+E+")")}function k(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function O(t){var e=o(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var n=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"===t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,o;e=t.from instanceof Object?t.from.nodes:{id:t.from},o=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=n(t);i.edges.push(e)}),M(e,o,function(e,o){var s=c(i,e.id,o.id,t.type,t.attr),r=n(s);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=n(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},C="",E=0,S="",P="",I=D.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=O},function(t,e,i){function o(t,e){var i=[],o=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var n=t.edges,s=t.nodes,r=0;ro;++o)i[o].apply(this,e)}return this},o.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},o.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){function o(){}var n=i(42),s=i(41),r=i(44),a=i(1),h=(i(3),i(4),i(17),i(32),i(35)),d=i(52),l=i(15),u=i(27);n(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panstart",this._onDragStart.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new s(this.dom.root),this.hammer.get("pinch").set({enable:!0}),this.listeners={};var o=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(o.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),r.onTouch(this.hammer,function(t){console.log("touch",t),i.emit("touch",t)}.bind(this)),r.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.touch={},this.redrawCount=0,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates"];if(a.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"axis"in t.orientation&&(this.options.orientation=t.orientation.axis)),"both"===this.options.orientation){if(!this.timeAxis2){var i=this.timeAxis2=new h(this.body);i.setOptions=function(t){var e=t?a.extend({},t):{};e.orientation="top",h.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}"hiddenDates"in this.options&&l.convertHiddenOptions(this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new d(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),this._initAutoResize()}this.components.forEach(function(e){return e.setOptions(t)}),this._redraw()},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.clear(),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");var i=e||0;this.components.forEach(function(e,o,n){e instanceof u&&e.options.id===i&&e.setCustomTime(t)})},o.prototype.getCustomTime=function(t){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");var e=t||0,i=this.customTime.getCustomTime();return this.components.forEach(function(t,o,n){t instanceof u&&t.options.id===e&&(i=t.getCustomTime())}),i},o.prototype.addCustomTime=function(t,e){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");if(void 0===t)throw new Error("Time parameter for the custom bar must be provided");var i,o,n,s=a.convert(t,"Date").valueOf();return this.customBarIds&&this.customBarIds.constructor===Array||(this.customBarIds=[0]),void 0===e?(i=this.customBarIds.filter(function(t){return a.isNumber(t)}),n=i.length>0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),n=e),this.customBarIds.push(n),o=new u(this.body,{showCustomTime:!0,time:s,id:n}),this.components.push(o),this.redraw(),n},o.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,o,n){i instanceof u&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),n.splice(o,1),i.destroy())})},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){return t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},o.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},o.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var o=i.valueOf()-e.valueOf();0>=o&&(o=864e5),e=new Date(e.valueOf()-.05*o),i=new Date(i.valueOf()+.05*o)}return{start:e,end:i}},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animate?n.animate:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=a.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,o=this.dom;if(o){l.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(a.addClassName(o.root,"vis-top"),a.removeClassName(o.root,"vis-bottom")):(a.removeClassName(o.root,"vis-top"),a.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=a.option.asSize(e.maxHeight,""),o.root.style.minHeight=a.option.asSize(e.minHeight,""),o.root.style.width=a.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var r=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+r+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=a.option.asSize(e.height,h+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=c+"px",o.left.style.left="0",o.left.style.top=c+"px",o.right.style.left="0",o.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(o.shadowTop.style.visibility=p,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=p,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=p,o.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t){var m=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[o].y?t[o].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=n.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style","vis-"+e.style), -a=1==e.options.catmullRom.enabled?o._catmullRom(t,e):o._linear(t),1==e.options.shaded.enabled){var d,l=n.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&s.draw(t,e,i)}},o._catmullRomUniform=function(t){for(var e,i,o,n,s,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],o=t[l+1],n=d>l+2?t[l+2]:o,s={x:(-e.x+6*i.x+o.x)*h,y:(-e.y+6*i.y+o.y)*h},r={x:(i.x+6*o.x-n.x)*h,y:(i.y+6*o.y-n.y)*h},a+="C"+s.x+","+s.y+" "+r.x+","+r.y+" "+o.x+","+o.y+" ";return a},o._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var o,n,s,r,a,h,d,l,u,c,p,f,m,v,g,y,b,w,_,x=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",k=t.length,M=0;k-1>M;M++)o=0==M?t[0]:t[M-1],n=t[M],s=t[M+1],r=k>M+2?t[M+2]:s,d=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),l=Math.sqrt(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2)),u=Math.sqrt(Math.pow(s.x-r.x,2)+Math.pow(s.y-r.y,2)),v=Math.pow(u,i),y=Math.pow(u,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),c=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={x:(-b*o.x+c*n.x+w*s.x)*f,y:(-b*o.y+c*n.y+w*s.y)*f},h={x:(y*n.x+p*s.x-b*r.x)*m,y:(y*n.y+p*s.y-b*r.y)*m},0==a.x&&0==a.y&&(a=n),0==h.x&&0==h.y&&(h=s),x+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+s.x+","+s.y+" ";return x},o._linear=function(t){for(var e="",i=0;it[o].y?t[o].y:e,i=i0&&(r=Math.min(r,Math.abs(c[l-1].x-a))),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved),y=l-(p[a].resolved+1);g0&&(r=Math.min(r,Math.abs(c[y].x-a))),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,"stack"==d.options.barChart.handleOverlap?(v=p[a].accumulated,p[a].accumulated+=d.zeroPosition-c[l].y):"sideBySide"==d.options.barChart.handleOverlap&&(h.width=h.width/p[a].amount,h.offset+=p[a].resolved*h.width-.5*h.width*(p[a].amount+1),"left"==d.options.barChart.align?h.offset-=.5*h.width:"right"==d.options.barChart.align&&(h.offset+=.5*h.width))}n.drawBar(c[l].x+h.offset,c[l].y-v,h.width,d.zeroPosition-c[l].y,d.className+" vis-bar",i.svgElements,i.svg),1==d.options.drawPoints.enabled&&s.draw([c[l]],d,i,h.offset)}},o._getDataIntersections=function(t,e){for(var i,o=0;o0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0==i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulated:0}),t[e[o].x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=i>t?i:t,n=0,"left"==e.options.barChart.align?n-=.5*t:"right"==e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"==e.options.barChart.align?n-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedBarYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};o._getDataIntersections(r,t),e[n]=o._getStackedBarYRange(r,t),e[n].yAxisOrientation=s,i.push(n)}},o._getStackedBarYRange=function(t,e){for(var i,o=e[0].y,n=e[0].y,s=0;se[s].y?e[s].y:o,n=nt[r].accumulated?t[r].accumulated:o,n=nt[o].y?t[o].y:e,i=i0)for(i in Ei)o=Ei[i],n=e[o],"undefined"!=typeof n&&(t[o]=n);return t}function p(t){c(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,e.updateOffset(this),Si=!1)}function f(t){return t instanceof p||null!=t&&a(t,"_isAMomentObject")}function m(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function v(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&m(t[o])!==m(e[o]))&&r++;return r+s}function g(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,o,n,s=0;s0;){if(o=w(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&v(n,i,!0)>=e-1)break;e--}s++}return null}function w(e){var i=null;if(!Pi[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Ci._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),_(i)}catch(o){}return Pi[e]}function _(t,e){var i;return t&&(i="undefined"==typeof e?k(t):x(t,e),i&&(Ci=i)),Ci._abbr}function x(t,e){return null!==e?(e.abbr=t,Pi[t]||(Pi[t]=new g),Pi[t].set(e),_(t),Pi[t]):(delete Pi[t],null)}function k(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ci;if(!n(t)){if(e=w(t))return e;t=[t]}return b(t)}function M(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function O(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function D(t){var e,i,o={};for(i in t)a(t,i)&&(e=O(i),e&&(o[e]=t[i]));return o}function T(t,i){return function(o){return null!=o?(E(this,t,o),e.updateOffset(this,i),this):C(this,t)}}function C(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function S(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=O(t),"function"==typeof this[t])return this[t](e);return this}function P(t,e,i){for(var o=""+Math.abs(t),n=t>=0;o.lengthe;e++)Ri[o[e]]?o[e]=Ri[o[e]]:o[e]=N(o[e]);return function(n){var s="";for(e=0;i>e;e++)s+=o[e]instanceof Function?o[e].call(n,t):o[e];return s}}function z(t,e){return t.isValid()?(e=R(e,t.localeData()),zi[e]||(zi[e]=A(e)),zi[e](t)):t.localeData().invalidDate()}function R(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(Ai.lastIndex=0;o>=0&&Ai.test(t);)t=t.replace(Ai,i),Ai.lastIndex=0,o-=1;return t}function L(t,e,i){Qi[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function F(t,e){return a(Qi,t)?Qi[t](e._strict,e._locale):new RegExp(B(t))}function B(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function j(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=m(t)}),i=0;io;o++){if(n=d([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function q(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),W(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function X(t){return null!=t?(q(this,t),e.updateOffset(this,!0),this):C(this,"Month")}function Z(){return W(this.year(),this.month())}function K(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[to]<0||i[to]>11?to:i[eo]<1||i[eo]>W(i[$i],i[to])?eo:i[io]<0||i[io]>24||24===i[io]&&(0!==i[oo]||0!==i[no]||0!==i[so])?io:i[oo]<0||i[oo]>59?oo:i[no]<0||i[no]>59?no:i[so]<0||i[so]>999?so:-1,t._pf._overflowDayOfYear&&($i>e||e>eo)&&(e=eo),t._pf.overflow=e),t}function Q(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function J(t,e){var i=!0;return h(function(){return i&&(Q(t),i=!1),e.apply(this,arguments)},e)}function $(t,e){ho[t]||(Q(e),ho[t]=!0)}function tt(t){var e,i,o=t._i,n=lo.exec(o);if(n){for(t._pf.iso=!0,e=0,i=uo.length;i>e;e++)if(uo[e][1].exec(o)){t._f=uo[e][0]+(n[6]||" ");break}for(e=0,i=co.length;i>e;e++)if(co[e][1].exec(o)){t._f+=co[e][0];break}o.match(Xi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=po.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 1970>t&&a.setFullYear(t),a}function ot(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function nt(t){return st(t)?366:365}function st(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return st(this.year())}function at(t,e,i){var o,n=i-e,s=i-t.day();return s>n&&(s-=7),n-7>s&&(s+=7),o=Dt(t).add(s,"d"),{week:Math.ceil(o.dayOfYear()/7),year:o.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ut(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ct(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function pt(t,e,i,o,n){var s,r,a=ot(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:n,s=n-a+(a>o?7:0)-(n>a?7:0),r=7*(e-1)+(i-n)+s+1,{year:r>0?t:t-1,dayOfYear:r>0?r:nt(t-1)+r}}function ft(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mt(t,e,i){return null!=t?t:null!=e?e:i}function vt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function gt(t){var e,i,o,n,s=[];if(!t._d){for(o=vt(t),t._w&&null==t._a[eo]&&null==t._a[to]&&yt(t),t._dayOfYear&&(n=mt(t._a[$i],o[$i]),t._dayOfYear>nt(n)&&(t._pf._overflowDayOfYear=!0),i=ot(n,0,t._dayOfYear),t._a[to]=i.getUTCMonth(),t._a[eo]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[io]&&0===t._a[oo]&&0===t._a[no]&&0===t._a[so]&&(t._nextDay=!0,t._a[io]=0),t._d=(t._useUTC?ot:it).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[io]=24)}}function yt(t){var e,i,o,n,s,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=mt(e.GG,t._a[$i],at(Dt(),1,4).year),o=mt(e.W,1),n=mt(e.E,1)):(s=t._locale._week.dow,r=t._locale._week.doy,i=mt(e.gg,t._a[$i],at(Dt(),s,r).year),o=mt(e.w,1),null!=e.d?(n=e.d,s>n&&++o):n=null!=e.e?e.e+s:s),a=pt(i,o,n,r,s),t._a[$i]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=R(t._f,t._locale).match(Ni)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Ri[s]?(o?t._pf.empty=!1:t._pf.unusedTokens.push(s),Y(s,o,t)):t._strict&&!o&&t._pf.unusedTokens.push(s);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[io]<=12&&(t._pf.bigHour=void 0),t._a[io]=wt(t._locale,t._a[io],t._meridiem),gt(t),K(t)}function wt(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function _t(t){var e,i,n,s,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(s=0;sr)&&(n=r,i=e));h(t,i||e)}function xt(t){if(!t._d){var e=D(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],gt(t)}}function kt(t){var e,i=t._i,o=t._f;return t._locale=t._locale||k(t._l),null===i||void 0===o&&""===i?u({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),f(i)?new p(K(i)):(n(o)?_t(t):o?bt(t):Mt(t),e=new p(K(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Mt(t){var i=t._i;void 0===i?t._d=new Date:s(i)?t._d=new Date(+i):"string"==typeof i?et(t):n(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),gt(t)):"object"==typeof i?xt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Ot(t,e,i,n,s){var r={};return"boolean"==typeof i&&(n=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=s,r._l=i,r._i=t,r._f=e,r._strict=n,r._pf=o(),kt(r)}function Dt(t,e,i,o){return Ot(t,e,i,o,!1)}function Tt(t,e){var i,o;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return Dt();for(i=e[0],o=1;ot&&(t=-t,i="-"),i+P(~~(t/60),2)+e+P(~~t%60,2)})}function Nt(t){var e=(t||"").match(Xi)||[],i=e[e.length-1]||[],o=(i+"").match(yo)||["-",0,0],n=+(60*o[1])+m(o[2]);return"+"===o[0]?n:-n}function At(t,i){var o,n;return i._isUTC?(o=i.clone(),n=(f(t)||s(t)?+t:+Dt(t))-+o,o._d.setTime(+o._d+n),e.updateOffset(o,!1),o):Dt(t).local()}function zt(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Rt(t,i){var o,n=this._offset||0;return null!=t?("string"==typeof t&&(t=Nt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=zt(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?Jt(this,qt(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:zt(this)}function Lt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ft(t){return this.utcOffset(0,t)}function Bt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(zt(this),"m")),this}function jt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Nt(this._i)),this}function Ht(t){return t=t?Dt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Yt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if(this._a){var t=this._isUTC?d(this._a):Dt(this._a);return this.isValid()&&v(this._a,t.toArray())>0}return!1}function Gt(){return!this._isUTC}function Ut(){return this._isUTC}function Vt(){return this._isUTC&&0===this._offset}function qt(t,e){var i,o,n,s=t,r=null;return Pt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(r=bo.exec(t))?(i="-"===r[1]?-1:1,s={y:0,d:m(r[eo])*i,h:m(r[io])*i,m:m(r[oo])*i,s:m(r[no])*i,ms:m(r[so])*i}):(r=wo.exec(t))?(i="-"===r[1]?-1:1,s={y:Xt(r[2],i),M:Xt(r[3],i),d:Xt(r[4],i),h:Xt(r[5],i),m:Xt(r[6],i),s:Xt(r[7],i),w:Xt(r[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Kt(Dt(s.from),Dt(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new St(s),Pt(t)&&a(t,"_locale")&&(o._locale=t._locale),o}function Xt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Kt(t,e){var i;return e=At(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Qt(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||($(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=qt(i,o),Jt(this,n,t),this}}function Jt(t,i,o,n){var s=i._milliseconds,r=i._days,a=i._months;n=null==n?!0:n,s&&t._d.setTime(+t._d+s*o),r&&E(t,"Date",C(t,"Date")+r*o),a&&q(t,C(t,"Month")+a*o),n&&e.updateOffset(t,r||a)}function $t(t){var e=t||Dt(),i=At(e,this).startOf("day"),o=this.diff(i,"days",!0),n=-6>o?"sameElse":-1>o?"lastWeek":0>o?"lastDay":1>o?"sameDay":2>o?"nextDay":7>o?"nextWeek":"sameElse";return this.format(this.localeData().calendar(n,this,Dt(e)))}function te(){return new p(this)}function ee(t,e){var i;return e=O("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Dt(t),+this>+t):(i=f(t)?+t:+Dt(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=O("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Dt(t),+t>+this):(i=f(t)?+t:+Dt(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var o,n,s=At(t,this),r=6e4*(s.utcOffset()-this.utcOffset());return e=O(e),"year"===e||"month"===e||"quarter"===e?(n=ae(this,s),"quarter"===e?n/=3:"year"===e&&(n/=12)):(o=this-s,n="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),i?n:se(n)}function ae(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Dt([2e3,1]).day(e),o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(o.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Re(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Pe(t,this.localeData()),this.add(t-e,"d")):e}function Le(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Fe(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Be(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function je(t,e){return e._meridiemParse}function He(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ye(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function We(t){I(0,[t,3],0,"millisecond")}function Ge(){return this._isUTC?"UTC":""}function Ue(){return this._isUTC?"Coordinated Universal Time":""}function Ve(t){return Dt(1e3*t)}function qe(){return Dt.apply(null,arguments).parseZone()}function Xe(t,e,i){var o=this._calendar[t];return"function"==typeof o?o.call(e,i):o}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Ke(){return this._invalidDate}function Qe(t){return this._ordinal.replace("%d",t)}function Je(t){return t}function $e(t,e,i,o){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,o):n.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,o){var n=k(),s=d().set(o,e);return n[i](s,t)}function oi(t,e,i,o,n){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,n);var s,r=[];for(s=0;o>s;s++)r[s]=ii(t,s,i,n);return r}function ni(t,e){return oi(t,e,"months",12,"month")}function si(t,e){return oi(t,e,"monthsShort",12,"month")}function ri(t,e){return oi(t,e,"weekdays",7,"day")}function ai(t,e){return oi(t,e,"weekdaysShort",7,"day")}function hi(t,e){return oi(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Yo(this._milliseconds),this._days=Yo(this._days),this._months=Yo(this._months),t.milliseconds=Yo(t.milliseconds),t.seconds=Yo(t.seconds),t.minutes=Yo(t.minutes),t.hours=Yo(t.hours),t.months=Yo(t.months),t.years=Yo(t.years),this}function li(t,e,i,o){var n=qt(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function ui(t,e){return li(this,t,e,1)}function ci(t,e){return li(this,t,e,-1)}function pi(){var t,e,i,o=this._milliseconds,n=this._days,s=this._months,r=this._data,a=0;return r.milliseconds=o%1e3,t=se(o/1e3),r.seconds=t%60,e=se(t/60),r.minutes=e%60,i=se(e/60),r.hours=i%24,n+=se(i/24),a=se(fi(n)),n-=se(mi(a)),s+=se(n/30),n%=30,a+=se(s/12),s%=12,r.days=n,r.months=s,r.years=a,this}function fi(t){return 400*t/146097}function mi(t){return 146097*t/400}function vi(t){var e,i,o=this._milliseconds;if(t=O(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+12*fi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(mi(this._months/12)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 24*e*60+o/6e4;case"second":return 24*e*60*60+o/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+o;default:throw new Error("Unknown unit "+t)}}function gi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*m(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=O(t),this[t+"s"]()}function wi(t){return function(){return this._data[t]}}function _i(){return se(this.days()/7)}function xi(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function ki(t,e,i){var o=qt(t).abs(),n=sn(o.as("s")),s=sn(o.as("m")),r=sn(o.as("h")),a=sn(o.as("d")),h=sn(o.as("M")),d=sn(o.as("y")),l=n0,l[4]=i,xi.apply(null,l)}function Mi(t,e){return void 0===rn[t]?!1:void 0===e?rn[t]:(rn[t]=e,!0)}function Oi(t){var e=this.localeData(),i=ki(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Di(){var t=an(this.years()),e=an(this.months()),i=an(this.days()),o=an(this.hours()),n=an(this.minutes()),s=an(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(o||n||s?"T":"")+(o?o+"H":"")+(n?n+"M":"")+(s?s+"S":""):"P0D"}var Ti,Ci,Ei=e.momentProperties=[],Si=!1,Pi={},Ii={},Ni=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ai=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,zi={},Ri={},Li=/\d/,Fi=/\d\d/,Bi=/\d{3}/,ji=/\d{4}/,Hi=/[+-]?\d{6}/,Yi=/\d\d?/,Wi=/\d{1,3}/,Gi=/\d{1,4}/,Ui=/[+-]?\d{1,6}/,Vi=/\d+/,qi=/[+-]?\d+/,Xi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Ki=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Qi={},Ji={},$i=0,to=1,eo=2,io=3,oo=4,no=5,so=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),M("month","M"),L("M",Yi),L("MM",Yi,Fi),L("MMM",Ki),L("MMMM",Ki),j(["M","MM"],function(t,e){e[to]=m(t)-1}),j(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[to]=n:i._pf.invalidMonth=t});var ro="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ao="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ho={};e.suppressDeprecationWarnings=!1;var lo=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,uo=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],co=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],po=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=J("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),M("year","y"),L("Y",qi),L("YY",Yi,Fi),L("YYYY",Gi,ji),L("YYYYY",Ui,Hi),L("YYYYYY",Ui,Hi),j(["YYYY","YYYYY","YYYYYY"],$i),j("YY",function(t,i){i[$i]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return m(t)+(m(t)>68?1900:2e3)};var fo=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),M("week","w"),M("isoWeek","W"),L("w",Yi),L("ww",Yi,Fi),L("W",Yi),L("WW",Yi,Fi),H(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=m(t)});var mo={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),M("dayOfYear","DDD"),L("DDD",Wi),L("DDDD",Bi),j(["DDD","DDDD"],function(t,e,i){i._dayOfYear=m(t)}),e.ISO_8601=function(){};var vo=J("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return this>t?this:t}),go=J("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments); - -return t>this?this:t});It("Z",":"),It("ZZ",""),L("Z",Xi),L("ZZ",Xi),j(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Nt(t)});var yo=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var bo=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,wo=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;qt.fn=St.prototype;var _o=Qt(1,"add"),xo=Qt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ko=J("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Me("gggg","weekYear"),Me("ggggg","weekYear"),Me("GGGG","isoWeekYear"),Me("GGGGG","isoWeekYear"),M("weekYear","gg"),M("isoWeekYear","GG"),L("G",qi),L("g",qi),L("GG",Yi,Fi),L("gg",Yi,Fi),L("GGGG",Gi,ji),L("gggg",Gi,ji),L("GGGGG",Ui,Hi),L("ggggg",Ui,Hi),H(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=m(t)}),H(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),M("quarter","Q"),L("Q",Li),j("Q",function(t,e){e[to]=3*(m(t)-1)}),I("D",["DD",2],"Do","date"),M("date","D"),L("D",Yi),L("DD",Yi,Fi),L("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),j(["D","DD"],eo),j("Do",function(t,e){e[eo]=m(t.match(Yi)[0],10)});var Mo=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),M("day","d"),M("weekday","e"),M("isoWeekday","E"),L("d",Yi),L("e",Yi),L("E",Yi),L("dd",Ki),L("ddd",Ki),L("dddd",Ki),H(["dd","ddd","dddd"],function(t,e,i){var o=i._locale.weekdaysParse(t);null!=o?e.d=o:i._pf.invalidWeekday=t}),H(["d","e","E"],function(t,e,i,o){e[o]=m(t)});var Oo="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Do="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),To="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),Be("a",!0),Be("A",!1),M("hour","h"),L("a",je),L("A",je),L("H",Yi),L("h",Yi),L("HH",Yi,Fi),L("hh",Yi,Fi),j(["H","HH"],io),j(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),j(["h","hh"],function(t,e,i){e[io]=m(t),i._pf.bigHour=!0});var Co=/[ap]\.?m?\.?/i,Eo=T("Hours",!0);I("m",["mm",2],0,"minute"),M("minute","m"),L("m",Yi),L("mm",Yi,Fi),j(["m","mm"],oo);var So=T("Minutes",!1);I("s",["ss",2],0,"second"),M("second","s"),L("s",Yi),L("ss",Yi,Fi),j(["s","ss"],no);var Po=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),We("SSS"),We("SSSS"),M("millisecond","ms"),L("S",Wi,Li),L("SS",Wi,Fi),L("SSS",Wi,Bi),L("SSSS",Vi),j(["S","SS","SSS","SSSS"],function(t,e){e[so]=m(1e3*("0."+t))});var Io=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var No=p.prototype;No.add=_o,No.calendar=$t,No.clone=te,No.diff=re,No.endOf=ve,No.format=le,No.from=ue,No.fromNow=ce,No.get=S,No.invalidAt=ke,No.isAfter=ee,No.isBefore=ie,No.isBetween=oe,No.isSame=ne,No.isValid=_e,No.lang=ko,No.locale=pe,No.localeData=fe,No.max=go,No.min=vo,No.parsingFlags=xe,No.set=S,No.startOf=me,No.subtract=xo,No.toArray=we,No.toDate=be,No.toISOString=de,No.toJSON=de,No.toString=he,No.unix=ye,No.valueOf=ge,No.year=fo,No.isLeapYear=rt,No.weekYear=De,No.isoWeekYear=Te,No.quarter=No.quarters=Se,No.month=X,No.daysInMonth=Z,No.week=No.weeks=ut,No.isoWeek=No.isoWeeks=ct,No.weeksInYear=Ee,No.isoWeeksInYear=Ce,No.date=Mo,No.day=No.days=Re,No.weekday=Le,No.isoWeekday=Fe,No.dayOfYear=ft,No.hour=No.hours=Eo,No.minute=No.minutes=So,No.second=No.seconds=Po,No.millisecond=No.milliseconds=Io,No.utcOffset=Rt,No.utc=Ft,No.local=Bt,No.parseZone=jt,No.hasAlignedHourOffset=Ht,No.isDST=Yt,No.isDSTShifted=Wt,No.isLocal=Gt,No.isUtcOffset=Ut,No.isUtc=Vt,No.isUTC=Vt,No.zoneAbbr=Ge,No.zoneName=Ue,No.dates=J("dates accessor is deprecated. Use date instead.",Mo),No.months=J("months accessor is deprecated. Use month instead",X),No.years=J("years accessor is deprecated. Use year instead",fo),No.zone=J("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Lt);var Ao=No,zo={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ro={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Lo="Invalid date",Fo="%d",Bo=/\d{1,2}/,jo={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Ho=g.prototype;Ho._calendar=zo,Ho.calendar=Xe,Ho._longDateFormat=Ro,Ho.longDateFormat=Ze,Ho._invalidDate=Lo,Ho.invalidDate=Ke,Ho._ordinal=Fo,Ho.ordinal=Qe,Ho._ordinalParse=Bo,Ho.preparse=Je,Ho.postformat=Je,Ho._relativeTime=jo,Ho.relativeTime=$e,Ho.pastFuture=ti,Ho.set=ei,Ho.months=G,Ho._months=ro,Ho.monthsShort=U,Ho._monthsShort=ao,Ho.monthsParse=V,Ho.week=ht,Ho._week=mo,Ho.firstDayOfYear=lt,Ho.firstDayOfWeek=dt,Ho.weekdays=Ie,Ho._weekdays=Oo,Ho.weekdaysMin=Ae,Ho._weekdaysMin=To,Ho.weekdaysShort=Ne,Ho._weekdaysShort=Do,Ho.weekdaysParse=ze,Ho.isPM=He,Ho._meridiemParse=Co,Ho.meridiem=Ye,_("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===m(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=J("moment.lang is deprecated. Use moment.locale instead.",_),e.langData=J("moment.langData is deprecated. Use moment.localeData instead.",k);var Yo=Math.abs,Wo=yi("ms"),Go=yi("s"),Uo=yi("m"),Vo=yi("h"),qo=yi("d"),Xo=yi("w"),Zo=yi("M"),Ko=yi("y"),Qo=wi("milliseconds"),Jo=wi("seconds"),$o=wi("minutes"),tn=wi("hours"),en=wi("days"),on=wi("months"),nn=wi("years"),sn=Math.round,rn={s:45,m:45,h:22,d:26,M:11},an=Math.abs,hn=St.prototype;hn.abs=di,hn.add=ui,hn.subtract=ci,hn.as=vi,hn.asMilliseconds=Wo,hn.asSeconds=Go,hn.asMinutes=Uo,hn.asHours=Vo,hn.asDays=qo,hn.asWeeks=Xo,hn.asMonths=Zo,hn.asYears=Ko,hn.valueOf=gi,hn._bubble=pi,hn.get=bi,hn.milliseconds=Qo,hn.seconds=Jo,hn.minutes=$o,hn.hours=tn,hn.days=en,hn.weeks=_i,hn.months=on,hn.years=nn,hn.humanize=Oi,hn.toISOString=Di,hn.toString=Di,hn.toJSON=Di,hn.locale=pe,hn.localeData=fe,hn.toIsoString=J("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Di),hn.lang=ko,I("X",0,0,"unix"),I("x",0,0,"valueOf"),L("x",qi),L("X",Zi),j("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),j("x",function(t,e,i){i._d=new Date(m(t))}),e.version="2.10.2",i(Dt),e.fn=Ao,e.min=Ct,e.max=Et,e.utc=d,e.unix=Ve,e.months=ni,e.isDate=s,e.locale=_,e.invalid=u,e.duration=qt,e.isMoment=f,e.weekdays=ri,e.parseZone=qe,e.localeData=k,e.isDuration=Pt,e.monthsShort=si,e.weekdaysMin=hi,e.defineLocale=x,e.weekdaysShort=ai,e.normalizeUnits=O,e.relativeTimeThreshold=Mi;var dn=e;return dn})}).call(e,i(54)(t))},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null,e=!1;return function i(o,n){function s(t){return t.match(/[^ ]+/g)}function r(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0},e.firstTarget=t;for(var o=t;o&&!i;){var n=o.hammer&&o.hammer._handlers[e.type];if(n)for(var s=0;s0?o._handlers[t]=i:(o._off(t,r),delete o._handlers[t]))}),o},o.emit=function(i,n){e||(t=n.target),o._emit(i,n)},o.destroy=function(){var t=o.element;delete t.hammer,o._handlers={},o._destroy()},o}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(f(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o-1}function _(t){return t.trim().split(/\s+/g)}function x(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=A(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=z(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=F(a,h),I(i,e),e.offsetDirection=L(e.deltaX,e.deltaY),e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,N(i,e);var d=t.element;b(e.srcEvent.target,d)&&(d=e.srcEvent.target),e.target=d}function I(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};(e.eventType===Ct||s.eventType===St)&&(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function N(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Pt&&(h>Tt||r.velocity===a)){var d=r.deltaX-e.deltaX,l=r.deltaY-e.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=vt(u.x)>vt(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function A(t){for(var e=[],i=0;in;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function R(t,e,i){return{x:e/t||0,y:i/t||0}}function L(t,e){return t===e?It:vt(t)>=vt(e)?t>0?Nt:At:e>0?zt:Rt}function F(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return B(e[1],e[0],Ht)-B(t[1],t[0],Ht)}function H(t,e){return F(e[0],e[1],Ht)/F(t[0],t[1],Ht)}function Y(){this.evEl=Wt,this.evWin=Gt,this.allow=!0,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=qt,this.evWin=Xt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function G(){this.evTarget=Kt,this.evWin=Qt,this.started=!1,C.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(St|Pt)&&(i=M(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=$t,this.targetIds={},C.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(Ct|Et)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return b(t.target,h)}),e===Ct)for(n=0;na&&(e.push(t),a=e.length-1):n&(St|Pt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Zt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},Kt="touchstart",Qt="touchstart touchmove touchend touchcancel";p(G,C,{handler:function(t){var e=Zt[t.type];if(e===Ct&&(this.started=!0),this.started){var i=U.call(this,t,e);e&(St|Pt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}});var Jt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},$t="touchstart touchmove touchend touchcancel";p(V,C,{handler:function(t){var e=Jt[t.type],i=q.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}),p(X,C,{handler:function(t,e,i){var o=i.pointerType==kt,n=i.pointerType==Ot;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(St|Pt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var te=O(pt.style,"touchAction"),ee=te!==a,ie="compute",oe="auto",ne="manipulation",se="none",re="pan-x",ae="pan-y";Z.prototype={set:function(t){t==ie&&(t=this.compute()),ee&&(this.manager.element.style[te]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),K(t.join(" "))},preventDefaults:function(t){if(!ee){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=w(o,se),s=w(o,ae),r=w(o,re);return n||s&&i&Lt||r&&i&Ft?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var he=1,de=2,le=4,ue=8,ce=ue,pe=16,fe=32;Q.prototype={defaults:{},set:function(t){return u(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=tt(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=tt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=tt(t,this),-1===x(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=tt(t,this);var e=x(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(i.options.event+(e?J(o):""),t)}var i=this,o=this.state;ue>o&&e(!0),e(),o>=ue&&e(!0)},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=fe)},canEmit:function(){for(var t=0;ts?Nt:At,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?zt:Rt,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return et.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this._super.emit.call(this,t)}}),p(ot,et,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(this._super.emit.call(this,t),1!==t.scale){var e=t.scale<1?"in":"out";this.manager.emit(this.options.event+e,t)}}}),p(nt,Q,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(St|Pt)&&!n)this.reset();else if(t.eventType&Ct)this.reset(),this._timer=h(function(){this.state=ce,this.tryEmit()},e.time,this);else if(t.eventType&St)return ce;return fe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===ce&&(t&&t.eventType&St?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),p(st,et,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),p(rt,et,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Lt|Ft,pointers:1},getTouchAction:function(){return it.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Lt|Ft)?e=t.velocity:i&Lt?e=t.velocityX:i&Ft&&(e=t.velocityY),this._super.attrTest.call(this,t)&&i&t.direction&&t.distance>this.options.threshold&&vt(e)>this.options.velocity&&t.eventType&St},emit:function(t){var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(at,Q,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ne]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[i],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i1?(this.stabilizationIterations=0,this.startedStabilization=!1,this._emitStabilized()):this.stabilizationIterations=0,this.stopSimulation())}},{key:"_emitStabilized",value:function(){var t=this;this.stabilizationIterations>1&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:t.stabilizationIterations})},0)}},{key:"physicsTick",value:function(){this.stabilized===!1&&(this.calculateForces(),this.stabilized=this.moveNodes(),this.stabilized===!0?this.revert():this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilizationIterations++)}},{key:"updatePhysicsIndices",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(o);for(var n=0;na&&o===!0,t=!0}return t===!0?n>.5*this.options.maxVelocity?!1:o:!0}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.options.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedrawRequests"),this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(this._stabilizationBatch.bind(this),0)}},{key:"_stabilizationBatch",value:function(){for(var t=0;this.stabilized===!1&&t=t&&i.push(n.id)}for(var o=0;oo?r.x:o,n=r.ys?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t){var e=void 0===arguments[1]?!0:arguments[1];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var i=this.body.nodes[t],o=i.containedNodes,n=i.containedEdges;for(var s in o)if(o.hasOwnProperty(s)){var r=this.body.nodes[s];r=o[s],r.x=i.x,r.y=i.y,r.vx=i.vx,r.vy=i.vy,r.options.hidden=!1,r.togglePhysics(!0),delete this.clusteredNodes[s]}for(var a in n)if(n.hasOwnProperty(a)){var h=this.body.edges[a];h.options.hidden=!1,h.togglePhysics(!0)}for(var d=0;do;)e.push(this.clusteredNodes[t].node),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t]),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;no&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;i0}),this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},s.extend(this.options,this.defaultOptions),this._determineBrowserMethod(); - -}return n(t,[{key:"setOptions",value:function(t){void 0!==t&&s.deepExtend(this.options,t)}},{key:"_startRendering",value:function(){this.renderingActive===!0&&(this.renderTimer||(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this))))}},{key:"_renderStep",value:function(){this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering()}},{key:"redraw",value:function(){this._redraw()}},{key:"_requestRedraw",value:function(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedrawRequests===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,!1),0):window.requestAnimationFrame(this._redraw.bind(this,!1)))}},{key:"_redraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");(0===this.canvas.frame.canvas.width||0===this.canvas.frame.canvas.height)&&this.canvas.setSize(),void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;e.clearRect(0,0,i,o),this.body.emitter.emit("beforeDrawing",e),e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),this.controlNodesActive===!0&&this._drawControlNodes(e),this.body.emitter.emit("afterDrawing",e),e.restore(),t===!0&&e.clearRect(0,0,i,o)}},{key:"_drawNodes",value:function(t){for(var e,i=void 0===arguments[1]?!1:arguments[1],o=this.body.nodes,n=this.body.nodeIndices,s=[],r=0;r0)for(var r=0;rt.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.bottom&&(i=t.shape.boundingBox.top),ot.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.bottom&&(i=t.shape.boundingBox.top),o.5*this.body.nodeIndices.length)return void this.fit(i,!1);t=this._getRange(i.nodes);var a=this.body.nodeIndices.length;e=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);e*=h}else{this.body.emitter.emit("_redraw",!0),t=this._getRange(i.nodes);var d=1.1*Math.abs(t.maxX-t.minX),l=1.1*Math.abs(t.maxY-t.minY),u=this.canvas.frame.canvas.clientWidth/d,c=this.canvas.frame.canvas.clientHeight/l;e=c>=u?u:c}e>1?e=1:0===e&&(e=1);var p=this._findCenter(t),f={position:p,scale:e,animation:i};this.moveTo(f)}},{key:"focusOnNode",value:function(t){var e=void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.body.view.translation),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=s.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getPosition",value:function(){return{x:this.body.view.translation.x,y:this.body.view.translation.y}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center);this.checkSelectionChanges(e),this.selectionHandler._generateClickEvent("click",e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center);this.checkSelectionChanges(e,!0),this.selectionHandler._generateClickEvent("click",e),this.selectionHandler._generateClickEvent("hold",e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.pageX,y:t.pageY});this.selectionHandler._generateClickEvent("rightClick",e)}},{key:"checkSelectionChanges",value:function(t){var e=void 0===arguments[1]?!1:arguments[1],i=this.selectionHandler._getSelectedEdgeCount(),o=this.selectionHandler._getSelectedNodeCount(),n=this.selectionHandler.getSelection(),s=void 0;s=e===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var r=this.selectionHandler._getSelectedEdgeCount(),a=this.selectionHandler._getSelectedNodeCount();a-o>0?(this.selectionHandler._generateClickEvent("selectNode",t),s=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectNode",t,n),s=!0),r-i>0?(this.selectionHandler._generateClickEvent("selectEdge",t),s=!0):0>r-i&&(this.selectionHandler._generateClickEvent("deselectEdge",t,n),s=!0),s===!0&&this.selectionHandler._generateClickEvent("select",t)}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,this.selectionHandler._generateClickEvent("dragStart",this.drag.pointer),void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e));var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center),o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){var t=i.x-e.drag.pointer.x,n=i.y-e.drag.pointer.y;o.forEach(function(i){var o=i.node;i.xFixed===!1&&(o.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(i.x)+t)),i.yFixed===!1&&(o.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(i.y)+n))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.body.emitter.emit("startSimulation")):this.body.emitter.emit("_requestRedraw"),this.selectionHandler._generateClickEvent("dragEnd",this.getPointer(t.center))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+"}):this.body.emitter.emit("zoom",{direction:"-"})}}},{key:"onMouseWheel",value:function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.pageX,y:t.pageY});this.zoom(i,n)}t.preventDefault()}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.pageX,y:t.pageY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hoverEnabled===!0){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var s=this.selectionHandler.getNodeAt(i);void 0===s&&(s=this.selectionHandler.getEdgeAt(i)),void 0!=s&&this.selectionHandler.hoverObject(s);for(var r in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(r)&&(s instanceof Node&&s.id!=r||s instanceof Edge||void 0===s)&&(this.selectionHandler.blurObject(this.hoverObj.nodes[r]),delete this.hoverObj.nodes[r]);this.body.emitter.emit("_requestRedraw")}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,u=[],c=0;c0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],c=0;c0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;i0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return void 0}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return void 0}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t}},{key:"_selectionIsEmpty",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptions(e);if(i===!0)return this.body.emitter.emit("refresh"),s.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptions",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={solver:"hierarchicalRepulsion"},this.optionsBackup.physics={solver:"barnesHut"}):"object"==typeof options.physics?(this.optionsBackup.physics={solver:"barnesHut"},void 0!==options.physics.solver&&(this.optionsBackup.physics={solver:options.physics.solver}),t.physics.solver="hierarchicalRepulsion"):options.physics!==!1&&(this.optionsBackup.physics={solver:"barnesHut"},t.physics.solver="hierarchicalRepulsion");var e="horizontal";("RL"===this.options.hierarchical.direction||"LR"===this.options.hierarchical.direction)&&(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth,dynamic:!0},t.edges.smooth={enabled:t.edges.smooth,dynamic:!1,type:e}):(this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!0},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!1,type:e}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0)for(var e=0;e0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.nodeSpacing=100;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():("directed"===this.options.hierarchical.sortMethod,0||this._determineLevelsDirected()));var n=this._getDistribution();this._placeNodesByHierarchy(n)}}},{key:"_placeNodesByHierarchy",value:function(t){var e=void 0,i=void 0;this.positionedNodes={};for(var o in t)if(t.hasOwnProperty(o))for(e in t[o].nodes)t[o].nodes.hasOwnProperty(e)&&(i=t[o].nodes[e],"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===i.x&&(i.x=t[o].distance),t[o].distance=i.x+this.nodeSpacing):(void 0===i.y&&(i.y=t[o].distance),t[o].distance=i.y+this.nodeSpacing),this.positionedNodes[e]=!0,this._placeBranchNodes(i.edges,i.id,t,o))}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={amount:0,nodes:{},distance:0}),t[o].amount+=1,t[o].nodes[e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length0&&(i=this._getHubSize(),0!==i);)for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],e.edges.length===i&&this._setLevel(0,e))}},{key:"_setLevel",value:function(t,e){if(void 0===this.hierarchicalLevels[e.id]){var i=void 0;this.hierarchicalLevels[e.id]=t;for(var o=0;oo&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===s.x&&(s.x=Math.max(i[a].distance,r.x)),i[a].distance=s.x+this.nodeSpacing,this.positionedNodes[s.id]=!0):(void 0===s.y&&(s.y=Math.max(i[a].distance,r.y)),i[a].distance=s.y+this.nodeSpacing),this.positionedNodes[s.id]=!0,s.edges.length>1&&this._placeBranchNodes(s.edges,s.id,i,a))}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;i0){for(var n=0;n0&&"function"==typeof this.options.handlerFunctions.deleteEdge&&(o=this.options.handlerFunctions.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode&&(t.body.data.edges.remove(e.edges),t.body.data.nodes.remove(e.nodes),t.body.emitter.emit("startSimulation"))})}else this.body.data.edges.remove(i),this.body.data.nodes.remove(e),this.body.emitter.emit("startSimulation")}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);return i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e,this.body.functions.createNode(i)}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,dynamic:!1,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performCreateEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.handlerFunctions.addNode){if(2!==this.options.handlerFunctions.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.handlerFunctions.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.add(i),this.showManipulatorToolbar()}},{key:"_performCreateEdge",value:function(t,e){var i=this,o={from:t,to:e};if(this.options.handlerFunctions.addEdge){if(2!==this.options.handlerFunctions.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.handlerFunctions.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if(this.options.handlerFunctions.editEdge){if(2!==this.options.handlerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.handlerFunctions.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i0&&this._makeItem([]),this._makeHeader(o);var s=[o];this._handleObject(n,s)}i++}var r=document.createElement("div");r.className="vis-network-configuration button",r.innerHTML="generate options",r.onclick=function(){e._printOptions()},r.onmouseover=function(){r.className="vis-network-configuration button hover"},r.onmouseout=function(){r.className="vis-network-configuration button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-network-configuration vis-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(r),this._push(),this.colorPicker.insertTo(this.container)}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-network-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?e-1:0),o=1;e>o;o++)i[o-1]=arguments[o];var n=document.createElement("div");n.className="vis-network-configuration item s"+t.length,i.forEach(function(t){n.appendChild(t)}),this.domElements.push(n)}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-network-configuration header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-network-configuration label s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-network-configuration select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s.1*e&&(a.min=e/10),2*e>s&&1!==s&&(a.max=2*e),a.value=e):a.value=o;var h=document.createElement("input");h.className="vis-network-configuration rangeinput",h.value=a.value;var d=this;a.onchange=function(){h.value=this.value,d._update(this.value,i)},a.oninput=function(){h.value=this.value};var l=this._makeLabel(i[i.length-1],i);this._makeItem(i,l,a,h)}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-network-configuration checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-network-configuration colorBlock",s.style.backgroundColor=e):s.className="vis-network-configuration colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this,n=e.getBoundingClientRect(),s=document.body.getBoundingClientRect(),r=n.left+n.width+5,a=n.top-s.top+.5*n.height;this.colorPicker.show(r,a),this.colorPicker.setColor(t),this.colorPicker.setCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)})}},{key:"_handleObject",value:function(t){var e=void 0===arguments[1]?[]:arguments[1];for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],n=h.copyAndExtendArray(e,i),s=this._getValue(n);if(o instanceof Array)this._handleArray(o,s,n);else if("string"==typeof o)this._handleString(o,s,n);else if("boolean"==typeof o)this._makeCheckbox(o,s,n);else if(o instanceof Object){var r=!0;if(-1!==e.indexOf("physics")&&this.actualOptions.physics.solver!==i&&(r=!1),r===!0)if(void 0!==o.enabled){var a=h.copyAndExtendArray(n,"enabled"),d=this._getValue(a);if(d===!0){var l=this._makeLabel(i,n,!0);this._makeItem(n,l),this._handleObject(o,n)}else this._makeCheckbox(o,d,n)}else{var l=this._makeLabel(i,n,!0);this._makeItem(n,l),this._handleObject(o,n)}}else console.error("dont know how to handle",o,i,n)}}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.network.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;nvar options = "+JSON.stringify(t,null,2)+""}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;il&&h>l&&(n=d,s=l)}return h>s?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n+'"?'+t.printLocation(o,e),a):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),a),r=!0,n}},{key:"printLocation",value:function(t,e){for(var i="\n\nProblem value found at: \noptions = {\n",o=0;on;n++)i+=" ";i+=t[o]+": {\n"}for(var n=0;no;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,u=e+r,c=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,c+h,u,c,u),this.bezierCurveTo(c-h,u,t,p+d,t,p),this.bezierCurveTo(t,p-d,c-h,e,c,e),this.bezierCurveTo(c+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,c+h,m,c,m),this.bezierCurveTo(c-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),u=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,u),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=0>r?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;it.left&&this.shape.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=["color","fixed","font","shadow"];if(L.selectiveNotDeepExtend(i,t,e),L.mergeOptions(t,e,"shadow"),void 0!==e.color){var o=L.parseColor(e.color);L.fillIfDefined(t.color,o)}void 0!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y)))}}]),t}();e["default"]=F,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i=this.options.scaling.label.maxVisible&&(r=Number(this.options.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=o(d,2),u=l[0],c=l[1],p=this._setAlignment(t,i,h,s),f=o(p,2);i=f[0],h=f[1],t.font=(e?"bold ":"")+r+"px "+this.options.font.face,t.fillStyle=u,t.textAlign="center",this.options.font.stroke>0&&(t.lineWidth=this.options.font.stroke,t.strokeStyle=c,t.lineJoin="round");for(var m=0;m0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if("horizontal"!==this.options.font.align){e=0,i=0;var n=2;"top"===this.options.font.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.options.font.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.options.font.color||"#000000",i=this.options.font.strokeColor||"#ffffff";if(t<=this.options.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.options.scaling.label.drawThreshold-t)));e=r.overrideOpacity(e,o),i=r.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.options.font.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){var i=void 0===arguments[2]?0:arguments[2],o=void 0===arguments[3]?0:arguments[3],n=void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.options.font.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.options.font.size,"hanging"===n&&(this.size.top+=.5*this.options.font.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.options.label){o=String(this.options.label).split("\n"),n=o.length,t.font=(e?"bold ":"")+this.options.font.size+"px "+this.options.font.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){if("string"==typeof e.font){var i=e.font.split(" ");t.size=i[0].replace("px",""),t.face=i[1],t.color=i[2]}else"object"==typeof e.font&&r.fillIfDefined(t,e.font);t.size=Number(t.size)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;ii.height?(r=i.x+.5*i.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}}],[{key:"parseOptions",value:function(t,e){var i=["id","font","from","hidden","hoverWidth","label","length","line","opacity","physics","selectionWidth","selfReferenceSize","to","title","value","width"];if(f.selectiveDeepExtend(i,t,e),f.mergeOptions(t,e,"smooth"),f.mergeOptions(t,e,"dashes"),f.mergeOptions(t,e,"shadow"),void 0!==e.scaling&&(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label")),void 0!==e.arrows)if("string"==typeof e.arrows){var o=e.arrows.toLowerCase();-1!=o.indexOf("to")&&(t.arrows.to.enabled=!0),-1!=o.indexOf("middle")&&(t.arrows.middle.enabled=!0),-1!=o.indexOf("from")&&(t.arrows.from.enabled=!0)}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to"),f.mergeOptions(t.arrows,e.arrows,"middle"),f.mergeOptions(t.arrows,e.arrows,"from")}if(void 0!==e.color)if(f.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var n=!1;void 0!==e.color.color&&(t.color.color=e.color.color,n=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,n=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,n=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&n===!0&&(t.color.inherit=!1)}}}]),t}();e["default"]=m,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;is;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i,o,n;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t);var s=this.options.gravitationalConstant*n.mass*o.options.mass/(t*t*t),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i,o=e.length,n=Number.MAX_VALUE,s=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(g.root),h=0;o>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i,o,n,s,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;ii&&(s=.5*u>i?1:c*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;ii?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;i700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom}},{key:"configureKeyboardBindings",value:function(){void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!1}):this.keycharm=a({container:this.canvas.frame,preventDefault:!1}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",this.bindToRedraw.bind(this,"_moveUp"),"keydown"),this.keycharm.bind("down",this.bindToRedraw.bind(this,"_moveDown"),"keydown"),this.keycharm.bind("left",this.bindToRedraw.bind(this,"_moveLeft"),"keydown"),this.keycharm.bind("right",this.bindToRedraw.bind(this,"_moveRight"),"keydown"),this.keycharm.bind("=",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num+",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("[",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("]",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pageup",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pagedown",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("up",this.unbindFromRedraw.bind(this,"_moveUp"),"keyup"),this.keycharm.bind("down",this.unbindFromRedraw.bind(this,"_moveDown"),"keyup"),this.keycharm.bind("left",this.unbindFromRedraw.bind(this,"_moveLeft"),"keyup"),this.keycharm.bind("right",this.unbindFromRedraw.bind(this,"_moveRight"),"keyup"),this.keycharm.bind("=",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num+",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("[",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("]",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pageup",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pagedown",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup")))}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=function(){function t(t,e){for(var i=0;io&&(s=o-e-this.padding),sn&&(r=n-i-this.padding),rs;s++)for(r=0;rp?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;ithis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.ythis.imageObj.height?(i=this.imageObj.width/this.imageObj.height,t=2*this.options.size*i||this.imageObj.width,e=2*this.options.size||this.imageObj.height):(i=this.imageObj.height/this.imageObj.width,t=2*this.options.size||this.imageObj.width,e=2*this.options.size*i||this.imageObj.height),this.width=t,this.height=e}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?a:r,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}},{key:"_drawImageAtPosition",value:function(t){0!=this.imageObj.width&&(t.globalAlpha=1,this.enableShadow(t),t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),this.disableShadow(t))}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){var o=function(t){return t&&t.__esModule?t:{"default":t}},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;i=l&&h>d;){var m=.5*(l+u);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)r?f===!1?l=m:u=m:f===!1?u=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=void 0,h=void 0;a=r.x,h=r.y;var d=1e9,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=t,v=e;for(u=1;10>u;u++)c=.1*u,p=Math.pow(1-c,2)*t+2*c*(1-c)*a+Math.pow(c,2)*i,f=Math.pow(1-c,2)*e+2*c*(1-c)*h+Math.pow(c,2)*o,u>0&&(l=this._getDistanceToLine(m,v,p,f,n,s),d=d>l?l:d),m=p,v=f;return d}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){var o=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")},n=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},s=function(){function t(t,e){for(var i=0;io.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),u=this._pointOnCircle(o,n,l,g),c=Math.atan2(t.y-u.y,t.x-u.x),p=t.distanceToBorder(e,c),f=Math.sqrt(Math.pow(u.x-t.x,2)+Math.pow(u.y-t.y,2)),m=p-f,!(Math.abs(m)0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t){var e=this.options.color;if(e.inherit!==!1){if("both"===e.inherit&&this.from.id!==this.to.id){var i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),o=void 0,n=void 0;return o=this.from.options.color.highlight.border,n=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(o=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),n=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?n=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(o=this.from.options.color.border),i.addColorStop(0,o),i.addColorStop(1,n),i}this.colorDirty===!0&&("to"===e.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,e.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,e.opacity)))}else this.colorDirty===!0&&(this.color.highlight=e.highlight,this.color.hover=e.hover,this.color.color=r.overrideOpacity(e.color,e.opacity));return this.colorDirty=!1,this.selected===!0?this.color.highlight:this.hover===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,n,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,n,s,r,a);else{var d=this._getCircleData(),l=o(d,3),u=l[0],c=l[1],p=l[2],f=u-s,m=c-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.lefts&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"drawArrowHead",value:function(t,e,i,n,s){t.strokeStyle=this.getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(n,s);var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0;if("from"===e?(d=this.from,l=this.to,u=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(d=this.to,l=this.from,u=-.1,c=this.options.arrows.to.scaleFactor):(d=this.to,l=this.from,c=this.options.arrows.middle.scaleFactor),d!=l){if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);r=Math.atan2(h.y-p.y,h.x-p.x)}else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.6,i);a=(10+5*this.options.width)*c,t.arrow(h.x,h.y,r,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}else{var f=void 0,m=void 0,v=this._getCircleData(t),g=o(v,3),y=g[0],b=g[1],w=g[2];"from"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),f=-2*m.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),f=-2*m.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(m=this._pointOnCircle(y,b,w,.175),f=3.9269908169872414);var _=(10+5*this.options.width)*c;t.arrow(m.x,m.y,f,_),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a,t.exports=e["default"]}])}); +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Images:i(37),dotparser:i(38),gephiParser:i(39)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41),e.Hammer=i(41)},function(t,e,i){var o=i(40),n=i(42);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=s.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return n.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!=typeof t[i]&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=void 0===arguments[2]?!1:arguments[2];for(var n in t)void 0!==i[n]&&("object"!=typeof i[n]?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"==typeof t[n]&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(o.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])):o(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return o(t);if(t instanceof Date)return o(t.valueOf());if(o.isMoment(t))return o(t);if(e.isString(t))return n=s.exec(t),o(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(o.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=s.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=s.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var s=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null===t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":void 0===e?"undefined":e},e.copyAndExtendArray=function(t,e){for(var i=[],o=0;oi;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,o){t.addEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.45*n.s,v:Math.min(1,1.05*n.v)},r={h:n.h,s:Math.min(1,1.25*n.v),v:.6*n.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var r={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=r.split(t.style.cssText),n=r.split(i),s=e.extend(o,n);t.style.cssText=r.join(s)},e.removeCssText=function(t,e){var i=r.split(t.style.cssText),o=r.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=r.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var o=Object.create(i),n=0;n=r&&n>s;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===o?d[i]:d[i][o],u=e(l);if(0==u)return h;-1==u?r=h+1:a=h-1,s++}return-1},e.binarySearchValue=function(t,e,i,o){for(var n,s,r,a,h=1e4,d=0,l=0,u=t.length-1;u>=l&&h>d;){if(a=Math.floor(.5*(u+l)),n=t[Math.max(0,a-1)][i],s=t[a][i],r=t[Math.min(t.length-1,a+1)][i],s==e)return a;if(e>n&&s>e)return"before"==o?Math.max(0,a-1):a;if(e>s&&r>e)return"before"==o?a:Math.min(t.length-1,a+1);e>s?l=a+1:u=a-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.options.drawPoints.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.options.drawPoints.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*o.options.drawPoints.size),a.setAttributeNS(null,"width",o.options.drawPoints.size),a.setAttributeNS(null,"height",o.options.drawPoints.size)),void 0!==o.options.drawPoints.styles&&a.setAttributeNS(null,"style",o.group.options.drawPoints.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a){if(0!=n){0>n&&(n*=-1,i-=n);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*o),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",s)}}},function(t,e,i){function o(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var o=this._options.type[i];"Date"==o||"ISODate"==o||"ASPDate"==o?this._type[i]="Date":this._type[i]=o}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var n=i(1),s=i(5);o.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=s.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},o.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},o.prototype.subscribe=o.prototype.on,o.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},o.prototype.unsubscribe=o.prototype.off,o.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var o=[];t in this._subscribers&&(o=o.concat(this._subscribers[t])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0;ns;s++)i=n._addItem(t[s]),o.push(i);else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),o.push(i)}return o.length&&this._trigger("add",{items:o},e),o},o.prototype.update=function(t,e){var i=[],o=[],n=[],s=this,r=s._fieldId,a=function(t){var e=t[r];s._data[e]?(e=s._updateItem(t),o.push(e),n.push(t)):(e=s._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),o.length&&this._trigger("update",{items:o,data:n},e),i.concat(o)},o.prototype.get=function(t){var e,i,o,s=this,r=n.getType(arguments[0]);"String"==r||"Number"==r?(e=arguments[0],o=arguments[1]):"Array"==r?(i=arguments[0],o=arguments[1]):o=arguments[0];var a;if(o&&o.returnType){var h=["Array","Object"];a=-1==h.indexOf(o.returnType)?"Array":o.returnType}else a="Array";var d,l,u,c,p=o&&o.type||this._options.type,f=o&&o.filter,m=[];if(void 0!=e)d=s._getItem(e,p),f&&!f(d)&&(d=null);else if(void 0!=i)for(u=0,c=i.length;c>u;u++)d=s._getItem(i[u],p),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=s._getItem(l,p),(!f||f(d))&&m.push(d));if(o&&o.order&&void 0==e&&this._sort(m,o.order),o&&o.fields){var v=o.fields;if(void 0!=e)d=this._filterFields(d,v);else for(u=0,c=m.length;c>u;u++)m[u]=this._filterFields(m[u],v)}if("Object"==a){var g={};for(u=0;ue;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=this._getItem(o,d),a(n)&&l.push(n[this._fieldId]));else if(h){s=[];for(o in r)r.hasOwnProperty(o)&&s.push(r[o]);for(this._sort(s,h),e=0,i=s.length;i>e;e++)l[e]=s[e][this._fieldId]}else for(o in r)r.hasOwnProperty(o)&&(n=r[o],l.push(n[this._fieldId]));return l},o.prototype.getDataSet=function(){return this},o.prototype.forEach=function(t,e){var i,o,n=e&&e.filter,s=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],o=i[this._fieldId],t(i,o);else for(o in r)r.hasOwnProperty(o)&&(i=this._getItem(o,s),(!n||n(i))&&t(i,o))},o.prototype.map=function(t,e){var i,o=e&&e.filter,n=e&&e.type||this._options.type,s=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,n),(!o||o(i))&&s.push(t(i,a)));return e&&e.order&&this._sort(s,e.order),s},o.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var o in t)t.hasOwnProperty(o)&&-1!=e.indexOf(o)&&(i[o]=t[o]);else for(var o in t)t.hasOwnProperty(o)&&e.hasOwnProperty(o)&&(i[e[o]]=t[o]);return i},o.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var o=t[i],n=e[i];return o>n?1:n>o?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},o.prototype.remove=function(t,e){var i,o,n,s=[];if(Array.isArray(t))for(i=0,o=t.length;o>i;i++)n=this._remove(t[i]),null!=n&&s.push(n);else n=this._remove(t),null!=n&&s.push(n);return s.length&&this._trigger("remove",{items:s},e),s},o.prototype._remove=function(t){if(n.isNumber(t)||n.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},o.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},o.prototype.max=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||r>o)&&(i=s,o=r)}return i},o.prototype.min=function(t){var e=this._data,i=null,o=null;for(var n in e)if(e.hasOwnProperty(n)){var s=e[n],r=s[t];null!=r&&(!i||o>r)&&(i=s,o=r)}return i},o.prototype.distinct=function(t){var e,i=this._data,o=[],s=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(o[e]==d){l=!0;break}l||void 0===d||(o[r]=d,r++)}if(s)for(e=0;ei;i++)n=e[i],this._ids[n]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},o=[],n=[],s=0;so;o++)s=a[o],r=this.get(s),r&&(this._ids[s]=!0,l.push(s));break;case"update":for(o=0,n=a.length;n>o;o++)s=a[o],r=this.get(s),r?this._ids[s]?(u.push(s),d.push(e.data[o])):(this._ids[s]=!0,l.push(s)):this._ids[s]&&(delete this._ids[s],c.push(s));break;case"remove":for(o=0,n=a.length;n>o;o++)s=a[o],this._ids[s]&&(delete this._ids[s],c.push(s))}this.length+=l.length-c.length,l.length&&this._trigger("add",{items:l},i),u.length&&this._trigger("update",{items:u,data:d},i),c.length&&this._trigger("remove",{items:c},i)}},o.prototype.on=s.prototype.on,o.prototype.off=s.prototype.off,o.prototype._trigger=s.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,t.exports=o},function(t,e,i){function o(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}o.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},o.extend=function(t,e){var i=new o(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var n=[{name:"flush",original:void 0}];if(e&&e.replace)for(var s=0;sthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var n=function(t){return t};this.xValueLabel=n,this.yValueLabel=n,this.zValueLabel=n,this.filterLabel="time",this.legendLabel="value",this.style=o.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new c,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(43),a=i(3),h=i(4),d=i(1),l=i(10),u=i(9),c=i(7),p=i(8),f=i(11),m=i(12);r(o.prototype),o.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==o.STYLE.DOTCOLOR&&this.style!==o.STYLE.DOTSIZE&&this.style!==o.STYLE.BARCOLOR&&this.style!==o.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},o.prototype.getNumberOfRows=function(t){return t.length},o.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},o.prototype.getDistinctValues=function(t,e){for(var i=[],o=0;ot[o][e]&&(i.min=t[o][e]),i.maxt;t++){var f=(t-c)/(p-c),v=240*f,g=this._hsv2rgb(v,1,1);u.strokeStyle=g,u.beginPath(),u.moveTo(h,r+t),u.lineTo(a,r+t),u.stroke()}u.strokeStyle=this.colorAxis,u.strokeRect(h,r,i,s)}if(this.style===o.STYLE.DOTSIZE&&(u.strokeStyle=this.colorAxis,u.fillStyle=this.colorDot,u.beginPath(),u.moveTo(h,r),u.lineTo(a,r),u.lineTo(a-i+e,d),u.lineTo(h,d),u.closePath(),u.fill(),u.stroke()),this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.DOTSIZE){var y=5,b=new m(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,n=this._convert3Dto2D(new l(_,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.xValueLabel(i.getCurrent())+" ",n.x,n.y),i.next()}for(v.lineWidth=1,o=void 0===this.defaultYStep,i=new m(this.yMin,this.yMax,this.yStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,n=this._convert3Dto2D(new l(s,i.getCurrent(),this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top",n.y+=b):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(" "+this.yValueLabel(i.getCurrent())+" ",n.x,n.y),i.next();for(v.lineWidth=1,o=void 0===this.defaultZStep,i=new m(this.zMin,this.zMax,this.zStep,o),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(s,r,i.getCurrent())),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(t.x-b,t.y),v.stroke(),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();v.lineWidth=1,t=this._convert3Dto2D(new l(s,r,this.zMin)),e=this._convert3Dto2D(new l(s,r,this.zMax)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),v.lineWidth=1,c=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),c=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),p=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(c.x,c.y),v.lineTo(p.x,p.y),v.stroke(),v.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),v.strokeStyle=this.colorAxis,v.beginPath(),v.moveTo(t.x,t.y),v.lineTo(e.x,e.y),v.stroke();var x=this.xLabel;x.length>0&&(u=.1/this.scale.y,s=(this.xMin+this.xMax)/2,r=Math.cos(w)>0?this.yMin-u:this.yMax+u,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)>0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)<0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(x,n.x,n.y));var k=this.yLabel;k.length>0&&(d=.1/this.scale.x,s=Math.sin(w)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new l(s,r,this.zMin)),Math.cos(2*w)<0?(v.textAlign="center",v.textBaseline="top"):Math.sin(2*w)>0?(v.textAlign="right",v.textBaseline="middle"):(v.textAlign="left",v.textBaseline="middle"),v.fillStyle=this.colorAxis,v.fillText(k,n.x,n.y));var M=this.zLabel;M.length>0&&(h=30,s=Math.cos(w)>0?this.xMin:this.xMax,r=Math.sin(w)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new l(s,r,a)),v.textAlign="right",v.textBaseline="middle",v.fillStyle=this.colorAxis,v.fillText(M,n.x-h,n.y))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._redrawDataGrid=function(){var t,e,i,n,s,r,a,h,d,u,c,p,f,m=this.frame.canvas,v=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(s=0;s0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+n.point.z)/4,u=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),c=1,this.showShadow?(p=Math.min(1+k.x/M/2,1),a=this._hsv2rgb(u,c,p),h=a):(p=1,a=this._hsv2rgb(u,c,p),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,v.lineWidth=d,v.fillStyle=a,v.strokeStyle=h,v.beginPath(),v.moveTo(t.screen.x,t.screen.y),v.lineTo(e.screen.x,e.screen.y),v.lineTo(n.screen.x,n.screen.y),v.lineTo(i.screen.x,i.screen.y),v.closePath(),v.fill(),v.stroke()}}else for(s=0;sc&&(c=0);var p,f,m;this.style===o.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)):this.style===o.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(p,1,1),m=this._hsv2rgb(p,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,i.beginPath(),i.arc(d.screen.x,d.screen.y,c,0,2*Math.PI,!0),i.fill(),i.stroke()}}},o.prototype._redrawDataBar=function(){var t,e,i,n,s=this.frame.canvas,r=s.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],o.lineWidth=1,o.strokeStyle="blue",o.beginPath(),o.moveTo(t.screen.x,t.screen.y)),e=1;e0&&o.stroke()}},o.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=n(t),this.startMouseY=s(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},o.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(n(t))-this.startMouseX,i=parseFloat(s(t))-this.startMouseY,o=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(o))0?1:0>t?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;ib)&&n>b&&(a=b,r=s)}}return r},o.prototype._showTooltip=function(t){var e,i,o;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,o=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",o=document.createElement("div"),o.style.position="absolute",o.style.height="0",o.style.width="0",o.style.border="5px solid #4d4d4d",o.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:o}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=o},function(t,e,i){function o(){this.armLocation=new n,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new n,this.cameraRotation=new n(.5*Math.PI,0,0),this.calculateCameraOrientation()}var n=i(10);o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=o},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(4);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o), +this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(to&&(o=0),o>this.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.setRange=function(t,e,i,o){this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),0>=s&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(){this._current=this._start-this._start%this._step},o.prototype.next=function(){this._current+=this._step},o.prototype.end=function(){return this._current>this._end},t.exports=o},function(t,e,i){function o(t,e,i,h){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof s||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var f=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return f.timeAxis.step.scale},getStep:function(){return f.timeAxis.step.step},toScreen:f._toScreen.bind(f),toGlobalScreen:f._toGlobalScreen.bind(f),toTime:f._toTime.bind(f),toGlobalTime:f._toGlobalTime.bind(f)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.itemSet=new c(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){f.emit("click",f.getEventProperties(t))}),this.on("doubletap",function(t){f.emit("doubleClick",f.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){f.emit("contextmenu",f.getEventProperties(t))},this.configurationSystem=new p(this,t,g),h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(43),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(44),d=i(35),l=i(26),u=i(27),c=i(32),p=i(45),f=i(46)["default"],m=i(46).printStyle,v=i(47).allOptions,g=i(47).configureOptions;o.prototype=new h,o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){var e=f.validate(t,v);if(e===!0&&(t={},console.log("%cErrors have been found in the supplied options object. None of the options will be used.",m)),h.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var i=this.itemsData;i&&(this.setItems(null),this.setItems(i))}},o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var o=this._getDataRange();var n=void 0!=this.options.start?this.options.start:o.start,a=void 0!=this.options.end?this.options.end:o.end;this.setWindow(n,a,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||n>e)&&(n=e),(null===s||i>s)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(r-a/2,r+a/2,h)}}},o.prototype.getItemRange=function(){var t=this.itemsData&&this.itemsData.getDataSet(),e=null,i=null;if(t){var o=t.min("start");e=o?n.convert(o.start,"Date").valueOf():null;var s=t.max("start");s&&(i=n.convert(s.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?n.convert(r.end,"Date").valueOf():Math.max(i,n.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.pageX,i=t.center?t.center.y:t.pageY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this.itemSet.itemFromTarget(t),a=this.itemSet.groupFromTarget(t),h=u.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),c=this.body.util.getStep(),p=this._toTime(o),f=d?d(p,l,c):p,m=n.getTarget(t),v=null;return null!=r?v="item":null!=h?v="custom-time":n.hasParent(m,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&n.hasParent(m,this.timeAxis2.dom.foreground)?v="axis":n.hasParent(m,this.itemSet.dom.labelSet)?v="group-label":n.hasParent(m,this.currentTime.bar)?v="current-time":n.hasParent(m,this.dom.center)&&(v="background"),{event:t,item:r?r.id:null,group:a?a.groupId:null,what:v,pageX:e,pageY:i,x:o,y:s,time:p,snappedTime:f}},t.exports=o},function(t,e,i){function o(t,e,i,o){if(!(Array.isArray(i)||i instanceof s)&&i instanceof Object){var r=o;o=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},width:null,height:null,maxHeight:null,minHeight:null},this.options=n.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.linegraph=new c(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var n=(i(43),i(41),i(1)),s=i(3),r=i(4),a=i(17),h=i(44),d=i(35),l=i(26),u=i(27),c=i(34);o.prototype=new h,o.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof s||t instanceof r?t:new s(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},o.prototype.setGroups=function(t){var e;e=t?t instanceof s||t instanceof r?t:new s(t):null,this.groupsData=e,this.linegraph.setGroups(e)},o.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},o.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},o.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;or?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.pageX,i=t.center?t.center.y:t.pageY,o=e-n.getAbsoluteLeft(this.dom.centerContainer),s=i-n.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(o),a=u.customTimeFromTarget(t),h=n.getTarget(t),d=null;n.hasParent(h,this.timeAxis.dom.foreground)?d="axis":this.timeAxis2&&n.hasParent(h,this.timeAxis2.dom.foreground)?d="axis":n.hasParent(h,this.linegraph.yAxisLeft.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.yAxisRight.dom.frame)?d="data-axis":n.hasParent(h,this.linegraph.legendLeft.dom.frame)?d="legend":n.hasParent(h,this.linegraph.legendRight.dom.frame)?d="legend":null!=a?d="custom-time":n.hasParent(h,this.currentTime.bar)?d="current-time":n.hasParent(h,this.dom.center)&&(d="background");var l=[],c=this.linegraph.yAxisLeft,p=this.linegraph.yAxisRight;return c.hidden||l.push(c.screenToValue(s)),p.hidden||l.push(p.screenToValue(s)),{event:t,what:d,pageX:e,pageY:i,x:o,y:s,time:r,value:l}},t.exports=o},function(t,e,i){var o=i(40);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var c=0,p=s.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;p>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var v=e.isHidden(t.range.start,t.hiddenDates),g=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==v.hidden&&(y=1==t.range.startToFront?v.startDate-1:v.endDate+1),1==g.hidden&&(b=1==t.range.endToFront?g.startDate-1:g.endDate+1),(1==v.hidden||1==g.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],o=0;o=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&a>n){i=!0;break}}if(1==i&&n=e&&i>r&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,n){return n=o(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,n)},e.getHiddenDurationBefore=function(t,e,i){var n=0;i=o(i).toDate().valueOf();for(var s=0;s=e.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?0>o?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&n>t)return{hidden:!0,startDate:o,endDate:n}}return{hidden:!1,startDate:o,endDate:n}}},function(t,e,i){function o(t,e,i,o,n,s,r){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.formattingFunction=s,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=r,this.setRange(t,e,i,o,n)}o.prototype.setRange=function(t,e,i,o,n){this._start=void 0===n.min?t:n.min,this._end=void 0===n.max?e:n.max,this._start===this._end&&(this._start=void 0===n.min?this._start-.75:this._start,this._end=void 0===n.max?this._end+1:this._end),this.autoScale===!0&&this.setMinimumStep(i,o),this.setFirst(n)},o.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,o=1.2*i,n=t*(o/e),s=Math.round(Math.log(o)/Math.LN10),r=-1,a=Math.pow(10,s),h=0;0>s&&(h=s);for(var d=!1,l=h;Math.abs(l)<=Math.abs(s);l++){a=Math.pow(10,l);for(var u=0;u=n){d=!0,r=u;break}}if(d===!0)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},o.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,this.alignZeros===!0&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},o.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},o.prototype.hasNext=function(){return this.current>=this.marginStart},o.prototype.next=function(){var t=this.current;this.current-=this.step,this.current===t&&(this.current=this._end)},o.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},o.prototype.getCurrent=function(){var t=Math.abs(this.current)t)for(var e=0;-t>e;e++)this.previous();else if(t>0)for(var e=0;t>e;e++)this.next()},t.exports=o},function(t,e,i){function o(t,e){var i=a().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function s(t,e){return{x:t.x-r.getAbsoluteLeft(e),y:t.y-r.getAbsoluteTop(e)}}var r=i(1),a=(i(48),i(40)),h=i(25),d=i(15);o.prototype=new h,o.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},o.prototype.setRange=function(t,e,i,o){o!==!0&&(o=!1);var n=void 0!=t?r.convert(t,"Date").valueOf():null,s=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,l=this.end,u="object"==typeof i&&"duration"in i?i.duration:500,c="object"==typeof i&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",p=r.easingFunctions[c];if(!p)throw new Error("Unknown easing function "+JSON.stringify(c)+". Choose from: "+Object.keys(r.easingFunctions).join(", "));var f=(new Date).valueOf(),m=!1,v=function b(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-f,i=p(e/u),r=e>u,c=r||null===n?n:h+(n-h)*i,v=r||null===s?s:l+(s-l)*i;g=a._applyRange(c,v),d.updateHiddenDates(a.body,a.options.hiddenDates),m=m||g,g&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:o}),r?m&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:o}):a.animationTimer=setTimeout(b,20)}};return v()}var g=this._applyRange(n,s);if(d.updateHiddenDates(this.body,this.options.hiddenDates),g){var y={start:new Date(this.start),end:new Date(this.end),byUser:o};this.body.emitter.emit("rangechange",y),this.body.emitter.emit("rangechanged",y)}},o.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},o.prototype._applyRange=function(t,e){var i,o=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(o>n&&(n=o),null!==a&&a>o&&(i=a-o,o+=i,n+=i,null!=s&&n>s&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=a&&a>o&&(o=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-o&&(this.end-this.start===h&&o>this.start&&nd&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},o.prototype.getRange=function(){return{start:this.start,end:this.end}},o.prototype.conversion=function(t,e){return o.conversion(this.start,this.end,t,e)},o.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},o.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},o.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;n(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,s=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=s;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*o,h=this.props.touch.start+a,l=this.props.touch.end+a,u=d.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),c=d.snapAwayFromHidden(this.body.hiddenDates,l,this.previousDelta-i,!0);if(u!=h||c!=l)return this.deltaDifference+=i,this.props.touch.start=u,this.props.touch.end=c,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,l),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},o.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},o.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var o=s({x:t.pageX,y:t.pageY},this.body.dom.center),n=this._pointerToDate(o);this.zoom(i,n,e)}t.preventDefault()}},o.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},o.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=s(t.center,this.body.dom.center));var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=o-n,a=i-n+(this.props.touch.start-(i-n))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=0>=1-e,this.endToFront=0>=e-1;var l=d.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),u=d.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(l!=a||u!=h)&&(this.props.touch.start=l,this.props.touch.end=u,this.scaleOffset=1-t.scale,a=l,h=u),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},o.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},o.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var o=d.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=d.getHiddenDurationBefore(this.body.hiddenDates,this,e),s=o-n,r=e-n+(this.start-(e-n))*t,a=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=d.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),l=d.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||l!=a)&&(r=h,a=l),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},o.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},o.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n)},t.exports=o},function(t,e,i){var o=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){ +t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,o="end"in e.data?e.data.end:e.data.start;return i-o})},e.stack=function(t,i,o){var n,s;if(o)for(n=0,s=t.length;s>n;n++)t[n].top=null;for(n=0,s=t.length;s>n;n++){var r=t[n];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var o,n,s;for(o=0,n=t.length;n>o;o++)if(void 0!==t[o].data.subgroup){s=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+oe.top}},function(t,e,i){function o(t,e,i,n){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=n,void 0===n&&(this.hiddenDates=[]),this.format=o.FORMAT}var n=i(40),s=i(15),r=i(1);o.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},o.prototype.setFormat=function(t){var e=r.deepExtend({},o.FORMAT);this.format=r.deepExtend(e,t)},o.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},o.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},o.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},o.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},o.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=new Date(t.valueOf());if("year"==e){var n=o.getFullYear()+Math.round(o.getMonth()/12);o.setFullYear(Math.round(n/i)*i),o.setMonth(0),o.setDate(0),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("month"==e)o.getDate()>15?(o.setDate(1),o.setMonth(o.getMonth()+1)):o.setDate(1),o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.setHours(24*Math.round(o.getHours()/24));break;default:o.setHours(12*Math.round(o.getHours()/12))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.setHours(12*Math.round(o.getHours()/12));break;default:o.setHours(6*Math.round(o.getHours()/6))}o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:o.setMinutes(60*Math.round(o.getMinutes()/60));break;default:o.setMinutes(30*Math.round(o.getMinutes()/30))}o.setSeconds(0),o.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.setMinutes(5*Math.round(o.getMinutes()/5)),o.setSeconds(0);break;case 5:o.setSeconds(60*Math.round(o.getSeconds()/60));break;default:o.setSeconds(30*Math.round(o.getSeconds()/30))}o.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.setSeconds(5*Math.round(o.getSeconds()/5)),o.setMilliseconds(0);break;case 5:o.setMilliseconds(1e3*Math.round(o.getMilliseconds()/1e3));break;default:o.setMilliseconds(500*Math.round(o.getMilliseconds()/500))}else if("millisecond"==e){var s=i>5?i/2:1;o.setMilliseconds(Math.round(o.getMilliseconds()/s)*s)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?n(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(n().add(1,"day"),"day")?" tomorrow":t.isSame(n().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function o(t){return t.isSame(new Date,"month")?" current-month":""}function s(t){return t.isSame(new Date,"year")?" current-year":""}var r=n(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-h"+(d+4)),"h"+d+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),u=a.format("MMMM").toLowerCase();return"day"+l+" "+u+o(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var c=a.year();return"year"+c+s(a)+t(c);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var n=i(41),s=i(1);o.prototype.stack=!0,o.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},o.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},o.prototype.isVisible=function(t){return!1},o.prototype.show=function(){return!1},o.prototype.hide=function(){return!1},o.prototype.redraw=function(){},o.prototype.repositionX=function(){},o.prototype.repositionY=function(){},o.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="vis-delete",i.title="Delete this item",new n(i).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},o.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var o=this._contentToString(this.content)!==this._contentToString(e);if(o){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},o.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("vis-title")},o.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e="top"===this.options.orientation.item;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups,r=n[o].index;if(1==e){i=this.parent.subgroups[o].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in n)n.hasOwnProperty(h)&&1==n[h].visible&&n[h].indexr&&(a+=l)}i=this.parent.subgroups[o].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof s?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=o},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(20);i(1);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-o>n&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n,1);switch(this.overflow?(this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:0>n?-n:0,this.dom.content.style.left=e+"px"}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t,e){this.options=null,this.props=null}o.prototype.setOptions=function(t){t&&util.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(25),r=i(40),a=i(49);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;30>o&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={locales:h,locale:"en",id:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(25),a=i(40),h=i(49);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["locale","locales","id"],this.options,t)},o.prototype._create=function(){var t=document.createElement("div");t["custom-time"]=this,t.className="vis-custom-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=new n(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this))},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var o=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");return o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e,i){function o(t,e,i,o){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:function(t){return""+t.toPrecision(5)},title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:function(t){return""+t.toPrecision(5)},title:{text:void 0,style:void 0}}},this.linegraphOptions=o,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var s=this;this.body.emitter.on("verticalDrag",function(){s.dom.lineContainer.style.top=s.body.domProps.scrollTop+"px"})}var n=i(1),s=i(2),r=i(25),a=i(16);o.prototype=new r,o.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},o.prototype.updateGroup=function(t,e){this.groups[t]=e},o.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},o.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0); +var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","left","right","alignZeros"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),e===!0&&this.dom.frame&&(this.hide(),this.show())}},o.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},o.prototype._redrawGroupIcons=function(){s.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,o=4,n=o+.5*i;t="left"===this.options.orientation?o:this.width-e-o;var r=Object.keys(this.groups);r.sort(function(t,e){return e>t?-1:1});for(var a=0;a0&&(t=0),this.range.start=t,this.range.end=e},o.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(this.groups[i].visible!==!0||void 0!==this.linegraphOptions.visibility[i]&&this.linegraphOptions.visibility[i]!==!0||e++);if(0===this.amountOfGroups||0===e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=this.options.visible===!0?Number((""+this.options.width).replace("px","")):0;var o=this.props,n=this.dom.frame;n.className="vis-data-axis",this._calculateCharSize();var s=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;o.minorLabelHeight=r?o.minorCharHeight:0,o.majorLabelHeight=a?o.majorCharHeight:0,o.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,o.minorLineHeight=1,o.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,o.majorLineHeight=1,"left"===s?(n.style.top="0",n.style.left="0",n.style.bottom="",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(n.style.top="",n.style.bottom="0",n.style.left="0",n.style.width=this.width+"px",n.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,this.options.icons===!0?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t},o.prototype._redrawLabels=function(){var t=!1;s.prepareElements(this.DOMelements.lines),s.prepareElements(this.DOMelements.labels);var e,i=this.options.orientation;if(this.master===!1){var o,n,r,h;-1!==this.zeroCrossing&&this.options.alignZeros===!0?this.range.end>0?(o=this.range.end/this.zeroCrossing,n=this.range.end-this.amountOfSteps*o,r=this.range.end):(o=-1*this.range.start/(this.amountOfSteps-this.zeroCrossing),n=this.range.start,r=this.range.start+o*this.amountOfSteps):(n=this.range.start,r=this.range.end),h=this.stepPixels}else h=this.props.majorCharHeight,n=this.range.start,r=this.range.end;if(this.step=e=new a(n,r,h,this.dom.frame.offsetHeight,this.options[this.options.orientation].range,this.options[this.options.orientation].format,this.master===!1&&this.options.alignZeros),this.master===!0)this.stepPixels=this.dom.frame.offsetHeight/e.marginRange*e.step,this.amountOfSteps=Math.ceil(this.dom.frame.offsetHeight/this.stepPixels);else if(this.options.alignZeros===!0&&-1!==this.zeroCrossing){var d=(e.current-this.zeroCrossing*e.step)/e.step;this.step.shift(d)}this.valueAtBottom=e.marginEnd,this.maxLabelSize=0;for(var l=0,u=0,c=!1;u0&&u!==this.amountOfSteps&&((this.options.showMinorLabels&&c===!1||this.master===!1&&this.options.showMinorLabels===!0)&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-minor",this.props.minorCharHeight),c&&this.options.showMajorLabels&&this.master===!0||this.options.showMinorLabels===!1&&this.master===!1&&c===!0?(l>=0&&this._redrawLabel(l-2,e.getCurrent(),i,"vis-y-axis vis-major",this.props.majorCharHeight),this._redrawLine(l,i,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(l,i,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth)),this.master===!0&&0===e.current&&(this.zeroCrossing=u),e.next(),u+=1;this.master===!0&&0===e.current&&(this.zeroCrossing=u),this.conversionFactor=this.stepPixels/e.step;var p=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(p=this.props.titleCharHeight);var f=this.options.icons===!0?Math.max(this.options.iconWidth,p)+this.options.labelOffsetX+15:p+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-f&&this.options.visible===!0?(this.width=this.maxLabelSize+f,this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+f),this.options.width=this.width+"px",s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(s.cleanupElements(this.DOMelements.lines),s.cleanupElements(this.DOMelements.labels),t=!1),t},o.prototype.convertValue=function(t){var e=this.valueAtBottom-t,i=e*this.conversionFactor;return i},o.prototype.screenToValue=function(t){return this.valueAtBottom-t/this.conversionFactor},o.prototype._redrawLabel=function(t,e,i,o,n){var r=s.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=o,r.innerHTML=e,"left"===i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var f=this.visibleItems[c];f.repositionY(e)}return o},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var o=this;if(i.length>0){var s=i[0].top,r=i[0].top+i[0].height;if(n.forEach(i,function(t){s=Math.min(s,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(o.subgroups[t.data.subgroup].height=Math.max(o.subgroups[t.data.subgroup].height,t.height),o.subgroups[t.data.subgroup].visible=!0)}),s>t.axis){var a=s-t.axis;r-=a,n.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(s=0;sl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,s=0;sl})}for(s=0;s=0&&(s=e[r],!n(s));r--)void 0===o[s.id]&&(o[s.id]=!0,i.push(s));for(r=t+1;rn;n++){var r=this.visibleItems[n];r.repositionY(e)}return o},o.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={type:null,orientation:{item:"bottom"},align:"auto",stack:!0,groupOrder:null,selectable:!0,multiselect:!1,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20}},this.options=s.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var n=i(41),s=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),u=i(31),c=i(22),p=i(23),f=i(24),m=i(21),v="__ungrouped__",g="__background__";o.prototype=new d,o.types={background:m,box:c,range:f,point:p},o.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var s=document.createElement("div");s.className="vis-labelset",this.dom.labelSet=s,this._updateUngrouped();var r=new u(g,null,this);r.show(),this.groups[g]=r,this.hammer=new n(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},o.prototype.setOptions=function(t){if(t){var e=["type","align","order","stack","selectable","multiselect","groupOrder","dataAttributes","template","hide","snap"];s.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(s.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&s.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&s.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},o.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&s.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},o.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},o.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},o.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},o.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)o=this.selection[e],n=this.items[o],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)o=t[e],n=this.items[o],n&&(this.selection.push(o),n.select())},o.prototype.getSelection=function(){return this.selection.concat([])},o.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),o=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var s=this.groups[n],r=s.visibleItems,a=0;ae&&o.push(h.id)}return o},o.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;o>i;i++)if(e[i]==t){e.splice(i,1);break}},o.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=s.option.asSize,o=this.options,n=o.orientation.item,r=!1,a=this.dom.frame,h=o.editable.updateTime||o.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="vis-itemset"+(h?" vis-editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var u=this.stackDirty,c=this._firstGroup(),p={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,f,u),s.forEach(this.groups,function(t){var i=t==c?p:f,o=t.redraw(e,i,u);r=o||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},o.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[v];return i||null},o.prototype._updateUngrouped=function(){var t,e,i=this.groups[v];this.groups[g];if(this.groupsData){if(i){i.hide(),delete this.groups[v];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var s=null,r=null;i=new l(s,r,this),this.groups[v]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},o.prototype.getLabelSet=function(){return this.dom.labelSet},o.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(s.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;s.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},o.prototype.getItems=function(){return this.itemsData},o.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(s.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.id;s.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,o)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},o.prototype.getGroups=function(){return this.groupsData},o.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},o.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},o.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:v},o.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),n=e.items[t],s=e._getType(i),r=o.types[s];if(n&&(r&&n instanceof r?e._updateItem(n,i):(e._removeItem(n),n=null)),!n){if(!r)throw new TypeError("rangeoverflow"==s?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}':'Unknown item type "'+s+'"');n=new r(i,e.conversion,e.options),n.id=t,e._addItem(n)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},o.prototype._onAdd=o.prototype._onUpdate,o.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},o.prototype._order=function(){s.forEach(this.groups,function(t){t.order()})},o.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},o.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==v||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);s.extend(n,{height:null}),o=new l(t,i,e),e.groups[t]=o;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("change",{queue:!0})},o.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},o.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!s.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},o.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},o.prototype._updateItem=function(t,e){var i=t.data.group,o=t.data.subgroup;if(t.setData(e),i!=t.data.group||o!=t.data.subgroup){var n=this.groups[i];n&&n.remove(t);var s=this._getGroupId(t.data),r=this.groups[s];r&&r.add(t)}},o.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id); +-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},o.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:r})}},o.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(o){var n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=s.getAbsoluteLeft(this.dom.frame),a=t.center.x-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),u={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(a+this.props.width/5);u.end=i?i(c,d,l):c}u[this.itemsData._fieldId]=s.randomUUID();var p=this.groupFromTarget(t);p&&(u.group=p.groupId),this.options.onAdd(u,function(t){t&&e.itemsData.getDataSet().add(t)})}}},o.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],n=t.srcEvent&&t.srcEvent.shiftKey||!1;if(n&&this.options.multiselect){i.push(e.id);var s=o._getItemRange(this.itemsData.get(i,this.itemOptions));i=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=s.min&&d<=s.max&&!(a instanceof m)&&i.push(a.id)}}else{var l=i.indexOf(e.id);-1==l?i.push(e.id):i.splice(l,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection()})}}},o._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},o.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},o.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.pageY,i=0;ia&&ea)return n}else if(0===i&&et?-1:1});for(var i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=Object.keys(this.groups);t.sort(function(t,e){return e>t?-1:1}),s.prepareElements(this.svgElements);var e=window.getComputedStyle(this.dom.frame).paddingTop,i=Number(e.replace("px","")),o=i,n=this.options.iconSize,r=.75*this.options.iconSize,a=i+.5*r+3;this.svg.style.width=n+5+i+"px";for(var h=0;h0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),u={};for(this._getRelevantData(a,u,d,l),this._applySampling(a,u),e=0;ep&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;ro){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=s)d.push(n[l]);e[t[o]]=d}}},o.prototype._getYRanges=function(t,e,i){var o,n,s,r,a=[],h=[];if(t.length>0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0?"left"==r.yAxisOrientation?a=a.concat(n.getData(o)):h=h.concat(n.getData(o)):i[t[s]]=n.getYRange(o,t[s]));c.getStackedYRange(a,i,t,"__barStackLeft","left"),c.getStackedYRange(h,i,t,"__barStackRight","right"),p.getStackedYRange(a,i,t,"__lineStackLeft","left"),p.getStackedYRange(h,i,t,"__lineStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=o>d?o:d):(r=!0,h=h>i?i:h,l=o>l?o:l));1==s&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}n=this._toggleAxisVisiblity(s,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==s?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!s,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixels=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,this.yAxisRight.amountOfSteps=this.yAxisLeft.amountOfSteps,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n;for(var p=["__barStackLeft","__barStackRight","__lineStackLeft","__lineStackRight"],u=0;uy;)y++,l=h.getCurrent(),u=h.isMajor(),p=h.getClassName(),m=f,f=this.body.util.toScreen(l),v=f-m,c&&(c.style.width=v+"px"),this.options.showMinorLabels&&this._repaintMinorText(f,h.getLabelMinor(),t,p),u&&this.options.showMajorLabels?(f>0&&(void 0==g&&(g=f),this._repaintMajorText(f,h.getLabelMajor(),t,p)),c=this._repaintMajorLine(f,t,p)):c=this._repaintMinorLine(f,t,p),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),w=h.getLabelMajor(b),_=w.length*(this.props.majorCharWidth||10)+10;(void 0==g||g>_)&&this._repaintMajorText(0,w,t,p)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.minorTexts.push(n),n.childNodes[0].nodeValue=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",n.style.left=t+"px",n.className="vis-text vis-minor "+o},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createTextNode(e);n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}this.dom.majorTexts.push(n),n.childNodes[0].nodeValue=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",n.style.left=t+"px"},o.prototype._repaintMinorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top=n.majorLabelHeight+"px":o.style.top=this.body.domProps.top.height+"px",o.style.height=n.minorLineHeight+"px",o.style.left=t-n.minorLineWidth/2+"px",o.className="vis-grid vis-vertical vis-minor "+i,o},o.prototype._repaintMajorLine=function(t,e,i){var o=this.dom.redundant.lines.shift();o||(o=document.createElement("div"),this.dom.background.appendChild(o)),this.dom.lines.push(o);var n=this.props;return"top"==e?o.style.top="0":o.style.top=this.body.domProps.top.height+"px",o.style.left=t-n.majorLineWidth/2+"px",o.style.height=n.majorLineHeight+"px",o.className="vis-grid vis-vertical vis-major "+i,o},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e,i){var o=this;if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:j,clickToUse:!1},z.extend(this.options,this.defaultOptions),this.body={nodes:{},nodeIndices:[],edges:{},edgeIndices:[],data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){}, +onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},container:t,view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new F(function(){return o.body.emitter.emit("_requestRedraw")}),this.groups=new r["default"],this.canvas=new y["default"](this.body),this.selectionHandler=new M["default"](this.body,this.canvas),this.interactionHandler=new x["default"](this.body,this.canvas,this.selectionHandler),this.view=new w["default"](this.body,this.canvas),this.renderer=new v["default"](this.body,this.canvas),this.physics=new c["default"](this.body),this.layoutEngine=new O["default"](this.body),this.clustering=new f["default"](this.body),this.manipulation=new C["default"](this.body,this.canvas,this.selectionHandler),this.nodesHandler=new h["default"](this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new l["default"](this.body,this.images,this.groups),this.canvas._create(),this.configurationSystem=new S["default"](this,this.body.container,N.configureOptions,this.canvas.pixelRatio),this.setOptions(i),this.setData(e)}var s=i(53),r=o(s),a=i(54),h=o(a),d=i(55),l=o(d),u=i(56),c=o(u),p=i(57),f=o(p),m=i(58),v=o(m),g=i(59),y=o(g),b=i(60),w=o(b),_=i(61),x=o(_),k=i(62),M=o(k),D=i(63),O=o(D),T=i(64),C=o(T),E=i(45),S=o(E),P=i(46),I=o(P),N=i(65);i(66);var A=i(43),z=(i(41),i(1)),L=(i(3),i(4),i(38)),R=i(39),F=i(37),B=i(67),j=i(68);A(n.prototype),n.prototype.setOptions=function(t){if(void 0!==t){var e=I["default"].validate(t,N.allOptions);e===!0&&(t={},console.log("%cErrors have been found in the supplied options object. None of the options will be used.",P.printStyle));var i=["locale","locales","clickToUse"];if(z.selectiveDeepExtend(i,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),this.configurationSystem.setOptions(t.configure),this.configurationSystem.options.enabled===!0){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};z.deepExtend(o.nodes,this.nodesHandler.options),z.deepExtend(o.edges,this.edgesHandler.options),z.deepExtend(o.layout,this.layoutEngine.options),z.deepExtend(o.interaction,this.selectionHandler.options),z.deepExtend(o.interaction,this.renderer.options),z.deepExtend(o.interaction,this.interactionHandler.options),z.deepExtend(o.manipulation,this.manipulation.options),z.deepExtend(o.physics,this.physics.options),z.deepExtend(o.global,this.canvas.options),z.deepExtend(o.global,this.options),this.configurationSystem.setModuleOptions(o)}void 0!==t.clickToUse?t.clickToUse===!0?void 0===this.activator&&(this.activator=new B(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},n.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&t[i].options.hidden===!1&&this.body.nodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.hidden===!1&&this.body.edgeIndices.push(o)},n.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t._updateVisibleIndices(),t.physics.updatePhysicsIndices(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation")})},n.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var e=L.DOTToGraph(t.dot);return void this.setData(e)}}else if(t&&t.gephi){if(t&&t.gephi){var i=R.parseGephi(t.gephi);return void this.setData(i)}}else this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0);this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("initPhysics")},n.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurationSystem,delete this.images,delete this.body.emitter.emit,delete this.body.emitter.on,delete this.body.emitter.off,delete this.body.emitter.once,delete this.body.emitter;for(var t in this.body.nodes)delete this.body.nodes[t];for(var e in this.body.edges)delete this.body.edges[e];z.recursiveDOMDelete(this.body.container)},n.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.setSize=function(){this.canvas.setSize.apply(this.canvas,arguments)},n.prototype.canvasToDOM=function(){this.canvas.canvasToDOM.apply(this.canvas,arguments)},n.prototype.DOMtoCanvas=function(){this.canvas.setSize.DOMtoCanvas(this.canvas,arguments)},n.prototype.findNode=function(){this.clustering.findNode.apply(this.clustering,arguments)},n.prototype.isCluster=function(){this.clustering.isCluster.apply(this.clustering,arguments)},n.prototype.openCluster=function(){this.clustering.openCluster.apply(this.clustering,arguments)},n.prototype.cluster=function(){this.clustering.cluster.apply(this.clustering,arguments)},n.prototype.clusterByConnection=function(){this.clustering.clusterByConnection.apply(this.clustering,arguments)},n.prototype.clusterByHubsize=function(){this.clustering.clusterByHubsize.apply(this.clustering,arguments)},n.prototype.clusterOutliers=function(){this.clustering.clusterOutliers.apply(this.clustering,arguments)},n.prototype.getSeed=function(){this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},n.prototype.enableEditMode=function(){this.manipulation.enableEditMode.apply(this.manipulation,arguments)},n.prototype.disableEditMode=function(){this.manipulation.disableEditMode.apply(this.manipulation,arguments)},n.prototype.addNodeMode=function(){this.manipulation.addNodeMode.apply(this.manipulation,arguments)},n.prototype.editNodeMode=function(){this.manipulation.editNodeMode.apply(this.manipulation,arguments)},n.prototype.addEdgeMode=function(){this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},n.prototype.editEdgeMode=function(){this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},n.prototype.deleteSelected=function(){this.manipulation.deleteSelected.apply(this.manipulation,arguments)},n.prototype.getPositions=function(){this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},n.prototype.storePositions=function(){this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},n.prototype.getBoundingBox=function(){this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},n.prototype.getConnectedNodes=function(){this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments)},n.prototype.getEdges=function(){this.nodesHandler.getEdges.apply(this.nodesHandler,arguments)},n.prototype.startSimulation=function(){this.physics.startSimulation.apply(this.physics,arguments)},n.prototype.stopSimulation=function(){this.physics.stopSimulation.apply(this.physics,arguments)},n.prototype.stabilize=function(){this.physics.stabilize.apply(this.physics,arguments)},n.prototype.getSelection=function(){this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},n.prototype.getSelectedNodes=function(){this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},n.prototype.getSelectedEdges=function(){this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},n.prototype.getNodeAt=function(){this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments)},n.prototype.getEdgeAt=function(){this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments)},n.prototype.selectNodes=function(){this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},n.prototype.selectEdges=function(){this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},n.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments)},n.prototype.redraw=function(){this.renderer.redraw.apply(this.renderer,arguments)},n.prototype.getScale=function(){this.view.getScale.apply(this.view,arguments)},n.prototype.getPosition=function(){this.view.getPosition.apply(this.view,arguments)},n.prototype.fit=function(){this.view.fit.apply(this.view,arguments)},n.prototype.moveTo=function(){this.view.moveTo.apply(this.view,arguments)},n.prototype.focus=function(){this.view.focus.apply(this.view,arguments)},n.prototype.releaseNode=function(){this.view.releaseNode.apply(this.view,arguments)},t.exports=n},function(t,e,i){function o(t){this.images={},this.imageBroken={},this.callback=t}o.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var o=this;i=new Image,i.onload=function(){0===this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),o.callback&&(o.images[t]=i,o.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,o.callback&&o.callback(this)):o.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,o.callback&&o.callback(this)):(console.error("Could not load image:",t),this.src=e,o.imageBroken[t]=!0)},i.src=t}return i},t.exports=o},function(t,e,i){function o(t){return C=t,f()}function n(){E=0,S=C.charAt(0)}function s(){E++,S=C.charAt(E)}function r(){return C.charAt(E+1)}function a(t){return N.test(t)}function h(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function d(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;o>i;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=h(n.attr,t.node))),i=s.length-1;i>=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(I=O.NULL,P="";" "===S||" "===S||"\n"===S||"\r"===S;)s();do{var t=!1;if("#"===S){for(var e=E-1;" "===C.charAt(e)||" "===C.charAt(e);)e--;if("\n"===C.charAt(e)||""===C.charAt(e)){for(;""!=S&&"\n"!=S;)s();t=!0}}if("/"===S&&"/"===r()){for(;""!=S&&"\n"!=S;)s();t=!0}if("/"===S&&"*"===r()){for(;""!=S;){if("*"===S&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===S||" "===S||"\n"===S||"\r"===S;)s()}while(t);if(""===S)return void(I=O.DELIMITER);var i=S+r();if(T[i])return I=O.DELIMITER,P=i,s(),void s();if(T[S])return I=O.DELIMITER,P=S,void s();if(a(S)||"-"===S){for(P+=S,s();a(S);)P+=S,s();return"false"===P?P=!1:"true"===P?P=!0:isNaN(Number(P))||(P=Number(P)),void(I=O.IDENTIFIER)}if('"'===S){for(s();""!=S&&('"'!=S||'"'===S&&'"'===r());)P+=S,'"'===S&&s(),s();if('"'!=S)throw x('End of string " expected');return s(),void(I=O.IDENTIFIER)}for(I=O.UNKNOWN;""!=S;)P+=S,s();throw new SyntaxError('Syntax error in part "'+k(P,30)+'"')}function f(){var t={};if(n(),p(),"strict"===P&&(t.strict=!0,p()),("graph"===P||"digraph"===P)&&(t.type=P,p()),I===O.IDENTIFIER&&(t.id=P,p()),"{"!=P)throw x("Angle bracket { expected");if(p(),m(t),"}"!=P)throw x("Angle bracket } expected");if(p(),""!==P)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==P&&"}"!=P;)v(t),";"===P&&p()}function v(t){var e=g(t);if(e)return void w(t,e);var i=y(t);if(!i){if(I!=O.IDENTIFIER)throw x("Identifier expected");var o=P;if(p(),"="===P){if(p(),I!=O.IDENTIFIER)throw x("Identifier expected");t[o]=P,p()}else b(t,o)}}function g(t){var e=null;if("subgraph"===P&&(e={},e.type="subgraph",p(),I===O.IDENTIFIER&&(e.id=P,p())),"{"===P){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=P)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===P?(p(),t.node=_(),"node"):"edge"===P?(p(),t.edge=_(),"edge"):"graph"===P?(p(),t.graph=_(),"graph"):null}function b(t,e){var i={id:e},o=_();o&&(i.attr=o),l(t,i),w(t,e)}function w(t,e){for(;"->"===P||"--"===P;){var i,o=P;p();var n=g(t);if(n)i=n;else{if(I!=O.IDENTIFIER)throw x("Identifier or subgraph expected");i=P,l(t,{id:i}),p()}var s=_(),r=c(t,e,i,o,s);u(t,r),e=i}}function _(){for(var t=null;"["===P;){for(p(),t={};""!==P&&"]"!=P;){if(I!=O.IDENTIFIER)throw x("Attribute name expected");var e=P;if(p(),"="!=P)throw x("Equal sign = expected");if(p(),I!=O.IDENTIFIER)throw x("Attribute value expected");var i=P;d(t,e,i),p(),","==P&&p()}if("]"!=P)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(P,30)+'" (char '+E+")")}function k(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=o(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var n=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.arrows="->"===t.type?"to":void 0,e};e.edges.forEach(function(t){var e,o;e=t.from instanceof Object?t.from.nodes:{id:t.from},o=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=n(t);i.edges.push(e)}),M(e,o,function(e,o){var s=c(i,e.id,o.id,t.type,t.attr),r=n(s);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=n(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var O={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},C="",E=0,S="",P="",I=O.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=D},function(t,e,i){function o(t,e){var i=[],o=[],n={edges:{inheritColor:!0},nodes:{fixed:!1,parseColor:!1}};void 0!==n&&(n.nodes.fixed=void 0!==e.fixed?n.fixed:!1,n.nodes.parseColor=void 0!==e.parseColor?n.parseColor:!1,n.edges.inheritColor=void 0!==e.inheritColor?n.inheritColor:!0);for(var s=t.edges,r=t.nodes,a=0;an&&(e[o+n++]=u[t])});16>n;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(0>d&&void 0===t.clockseq&&(r=r+1&16383),(0>d||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;6>p;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;16>a;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;16>e;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;256>c;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){function o(t){return t?n(t):void 0}function n(t){for(var e in o.prototype)t[e]=o.prototype[e];return t}t.exports=o,o.prototype.on=o.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},o.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;no;++o)i[o].apply(this,e)}return this},o.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},o.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){function o(){}var n=i(43),s=i(41),r=i(48),a=i(1),h=(i(3),i(4),i(17),i(32),i(35)),d=i(67),l=i(15),u=i(27);n(o.prototype),o.prototype._create=function(t){function e(t){i.isActive()&&i.emit("mousewheel",t)}this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pan",this._onDrag.bind(this));var i=this;this.on("change",function(t){t&&1==t.queue?i._redrawTimer||(i._redrawTimer=setTimeout(function(){i._redrawTimer=null,i._redraw()},0)):i._redraw()}),this.hammer=new s(this.dom.root),this.hammer.get("pinch").set({enable:!0}),this.listeners={};var o=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];if(o.forEach(function(t){var e=function(e){i.isActive()&&i.emit(t,e)};i.hammer.on(t,e),i.listeners[t]=e}),r.onTouch(this.hammer,function(t){i.emit("touch",t)}.bind(this)),r.onRelease(this.hammer,function(t){i.emit("release",t)}.bind(this)),this.dom.root.addEventListener("mousewheel",e),this.dom.root.addEventListener("DOMMouseScroll",e),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.customTimes=[],this.touch={},this.redrawCount=0,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},o.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates"];if(a.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"==typeof t.orientation&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new h(this.body);i.setOptions=function(t){var e=t?a.extend({},t):{};e.orientation="top",h.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("hiddenDates"in this.options&&l.convertHiddenOptions(this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new d(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),this.configurationSystem){this.configurationSystem.setOptions(t.configure);var n=a.deepExtend({},this.options);this.components.forEach(function(t){a.deepExtend(n,t.options)}),this.configurationSystem.setModuleOptions({global:n}),console.log(n)}this._redraw()},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},o.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+JSON.stringify(e));i.length>0&&i[0].setCustomTime(t)},o.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));return e[0].getCustomTime()},o.prototype.addCustomTime=function(t,e){var i=void 0!==t?a.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+JSON.stringify(e)+" already exists");var n=new u(this.body,{time:i,id:e});return this.customTimes.push(n),this.components.push(n),this.redraw(),e},o.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+JSON.stringify(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},o.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},o.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animation?t.animation:!0;this.range.setRange(e.start,e.end,i)}},o.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var o=i.valueOf()-e.valueOf();0>=o&&(o=864e5),e=new Date(e.valueOf()-.05*o),i=new Date(i.valueOf()+.05*o)}return{start:e,end:i}},o.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0!==n.animation?n.animation:!0,this.range.setRange(n.start,n.end,o)}else o=i&&void 0!==i.animation?i.animation:!0,this.range.setRange(t,e,o)},o.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=a.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=e&&void 0!==e.animation?e.animation:!0;this.range.setRange(n,s,r)},o.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},o.prototype.redraw=function(){this._redraw()},o.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,o=this.dom;if(o){l.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(a.addClassName(o.root,"vis-top"),a.removeClassName(o.root,"vis-bottom")):(a.removeClassName(o.root,"vis-top"),a.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=a.option.asSize(e.maxHeight,""),o.root.style.minHeight=a.option.asSize(e.minHeight,""),o.root.style.width=a.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=o.root.offsetHeight-o.root.clientHeight,s=o.root.offsetWidth-o.root.clientWidth;0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(s=n),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var r=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+r+i.bottom.height+n+i.border.top+i.border.bottom;o.root.style.height=a.option.asSize(e.height,h+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-s,i.left.width=o.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=o.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var u=i.root.width-i.left.width-i.right.width-s;i.center.width=u,i.centerContainer.width=u,i.top.width=u,i.bottom.width=u,o.background.style.height=i.background.height+"px",o.backgroundVertical.style.height=i.background.height+"px",o.backgroundHorizontal.style.height=i.centerContainer.height+"px",o.centerContainer.style.height=i.centerContainer.height+"px",o.leftContainer.style.height=i.leftContainer.height+"px",o.rightContainer.style.height=i.rightContainer.height+"px",o.background.style.width=i.background.width+"px",o.backgroundVertical.style.width=i.centerContainer.width+"px",o.backgroundHorizontal.style.width=i.background.width+"px",o.centerContainer.style.width=i.center.width+"px",o.top.style.width=i.top.width+"px",o.bottom.style.width=i.bottom.width+"px",o.background.style.left="0",o.background.style.top="0",o.backgroundVertical.style.left=i.left.width+i.border.left+"px",o.backgroundVertical.style.top="0",o.backgroundHorizontal.style.left="0",o.backgroundHorizontal.style.top=i.top.height+"px",o.centerContainer.style.left=i.left.width+"px",o.centerContainer.style.top=i.top.height+"px",o.leftContainer.style.left="0",o.leftContainer.style.top=i.top.height+"px",o.rightContainer.style.left=i.left.width+i.center.width+"px",o.rightContainer.style.top=i.top.height+"px",o.top.style.left=i.left.width+"px",o.top.style.top="0",o.bottom.style.left=i.left.width+"px",o.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"top"!=e.orientation.item&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),o.center.style.left="0",o.center.style.top=c+"px",o.left.style.left="0",o.left.style.top=c+"px",o.right.style.left="0",o.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(o.shadowTop.style.visibility=p,o.shadowBottom.style.visibility=f,o.shadowTopLeft.style.visibility=p,o.shadowBottomLeft.style.visibility=f,o.shadowTopRight.style.visibility=p,o.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t){var m=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTop0&&this._makeItem([]),this._makeHeader(o);var s=[o];this._handleObject(n,s)}i++}var r=document.createElement("div");r.className="vis-network-configuration button",r.innerHTML="generate options",r.onclick=function(){e._printOptions()},r.onmouseover=function(){r.className="vis-network-configuration button hover"},r.onmouseout=function(){r.className="vis-network-configuration button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-network-configuration vis-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(r),this._push(),this.colorPicker.insertTo(this.container)}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-network-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?e-1:0),o=1;e>o;o++)i[o-1]=arguments[o];var n=document.createElement("div");n.className="vis-network-configuration item s"+t.length,i.forEach(function(t){n.appendChild(t)}),this.domElements.push(n)}},{key:"_makeHeader",value:function(t){var e=document.createElement("div");e.className="vis-network-configuration header",e.innerHTML=t,this._makeItem([],e)}},{key:"_makeLabel",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=document.createElement("div");return o.className="vis-network-configuration label s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-network-configuration select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;s.1*e&&(a.min=e/10),2*e>s&&1!==s&&(a.max=2*e),a.value=e):a.value=o;var h=document.createElement("input");h.className="vis-network-configuration rangeinput",h.value=a.value;var d=this;a.onchange=function(){h.value=this.value,d._update(Number(this.value),i)},a.oninput=function(){h.value=this.value};var l=this._makeLabel(i[i.length-1],i);this._makeItem(i,l,a,h)}},{key:"_makeCheckbox",value:function(t,e,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-network-configuration checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeTextInput",value:function(t,e,i){var o=document.createElement("input");o.type="text",o.className="vis-network-configuration text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(t,e,i){var o=this,n=t[1],s=document.createElement("div");e=void 0===e?n:e,"none"!==e?(s.className="vis-network-configuration colorBlock",s.style.backgroundColor=e):s.className="vis-network-configuration colorBlock none",e=void 0===e?n:e,s.onclick=function(){o._showColorPicker(e,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(t,e,i){var o=this,n=e.getBoundingClientRect(),s=document.body.getBoundingClientRect(),r=n.left+n.width+5,a=n.top-s.top+.5*n.height;this.colorPicker.show(r,a),this.colorPicker.setColor(t),this.colorPicker.setCallback(function(t){var n="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=n,o._update(n,i)})}},{key:"_handleObject",value:function(t){var e=void 0===arguments[1]?[]:arguments[1];for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],n=h.copyAndExtendArray(e,i),s=this._getValue(n);if(o instanceof Array)this._handleArray(o,s,n);else if("string"==typeof o)this._makeTextInput(o,s,n);else if("boolean"==typeof o)this._makeCheckbox(o,s,n);else if(o instanceof Object){var r=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==i&&(r=!1),r===!0)if(void 0!==o.enabled){var a=h.copyAndExtendArray(n,"enabled"),d=this._getValue(a);if(d===!0){var l=this._makeLabel(i,n,!0);this._makeItem(n,l),this._handleObject(o,n)}else this._makeCheckbox(o,d,n)}else{var l=this._makeLabel(i,n,!0);this._makeItem(n,l),this._handleObject(o,n)}}else console.error("dont know how to handle",o,i,n)}}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=void 0===arguments[2]?{}:arguments[2],o=i;t="true"===t?!0:t,t="false"===t?!1:t;for(var n=0;nvar options = "+JSON.stringify(t,null,2)+""}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;is.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),h):n.distance<=d?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,n.closestMatch),h):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print(Object.keys(i))+t.printLocation(o,e),h),r=!0}},{key:"findInOptions",value:function(e,i,o){var n=void 0===arguments[3]?!1:arguments[3],r=1e9,a="",h=[];for(var d in i){var l=t.getType(i[d]),u=void 0;if("object"===l&&n===!0){var c=t.findInOptions(e,i[d],s.copyAndExtendArray(o,d));r>c.distance&&(a=c.closestMatch,h=c.path,r=c.distance)}else u=t.levenshteinDistance(e,d),r>u&&(a=d,h=s.copyArray(o),r=u)}return{closestMatch:a,path:h,distance:r}}},{key:"printLocation",value:function(t,e){for(var i=void 0===arguments[2]?"Problem value found at: \n":arguments[2],o="\n\n"+i+"options = {\n",n=0;ns;s++)o+=" ";o+=t[n]+": {\n"}for(var s=0;st[o].y?t[o].y:e,i=i0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o.prototype.draw=function(t,e,i){if(null!=t&&t.length>0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=n.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?o._catmullRom(t,e):o._linear(t),1==e.options.shaded.enabled){var d,l=n.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&s.draw(t,e,i)}},o._catmullRomUniform=function(t){for(var e,i,o,n,s,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],o=t[l+1],n=d>l+2?t[l+2]:o,s={x:(-e.x+6*i.x+o.x)*h,y:(-e.y+6*i.y+o.y)*h},r={x:(i.x+6*o.x-n.x)*h,y:(i.y+6*o.y-n.y)*h},a+="C"+s.x+","+s.y+" "+r.x+","+r.y+" "+o.x+","+o.y+" ";return a},o._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var o,n,s,r,a,h,d,l,u,c,p,f,m,v,g,y,b,w,_,x=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",k=t.length,M=0;k-1>M;M++)o=0==M?t[0]:t[M-1],n=t[M],s=t[M+1],r=k>M+2?t[M+2]:s,d=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),l=Math.sqrt(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2)),u=Math.sqrt(Math.pow(s.x-r.x,2)+Math.pow(s.y-r.y,2)),v=Math.pow(u,i),y=Math.pow(u,2*i),g=Math.pow(l,i),b=Math.pow(l,2*i),_=Math.pow(d,i),w=Math.pow(d,2*i),c=2*w+3*_*g+b,p=2*y+3*v*g+b,f=3*_*(_+g),f>0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={x:(-b*o.x+c*n.x+w*s.x)*f,y:(-b*o.y+c*n.y+w*s.y)*f},h={x:(y*n.x+p*s.x-b*r.x)*m,y:(y*n.y+p*s.y-b*r.y)*m},0==a.x&&0==a.y&&(a=n),0==h.x&&0==h.y&&(h=s),x+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+s.x+","+s.y+" ";return x},o._linear=function(t){for(var e="",i=0;it[o].y?t[o].y:e,i=i0&&(r=Math.min(r,Math.abs(c[l-1].x-a))),h=o._getSafeDrawData(r,d,m);else{var g=l+(p[a].amount-p[a].resolved),y=l-(p[a].resolved+1);g0&&(r=Math.min(r,Math.abs(c[y].x-a))),h=o._getSafeDrawData(r,d,m),p[a].resolved+=1,d.options.stack===!0?c[l].y0&&(i=Math.min(i,Math.abs(e[o-1].x-e[o].x))),0===i&&(void 0===t[e[o].x]&&(t[e[o].x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=i>t?i:t,n=0,"left"===e.options.barChart.align?n-=.5*t:"right"===e.options.barChart.align&&(n+=.5*t)):(o=e.options.barChart.width,n=0,"left"===e.options.barChart.align?n-=.5*e.options.barChart.width:"right"===e.options.barChart.align&&(n+=.5*e.options.barChart.width)),{width:o,offset:n}},o.getStackedYRange=function(t,e,i,n,s){if(t.length>0){t.sort(function(t,e){return t.x===e.x?t.groupIde[s].y?e[s].y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=nt[o].y?t[o].y:e,i=i0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[i],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i1?(this.stabilizationIterations=0,this.startedStabilization=!1,this._emitStabilized()):this.stabilizationIterations=0,this.stopSimulation())}},{key:"_emitStabilized",value:function(){var t=this;this.stabilizationIterations>1&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:t.stabilizationIterations})},0)}},{key:"physicsTick",value:function(){this.stabilized===!1&&(this.calculateForces(),this.stabilized=this.moveNodes(),this.stabilized===!0?this.revert():this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilizationIterations++)}},{key:"updatePhysicsIndices",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)t.hasOwnProperty(i)&&t[i].options.physics===!0&&this.physicsBody.physicsNodeIndices.push(i);for(var o in e)e.hasOwnProperty(o)&&e[o].options.physics===!0&&this.physicsBody.physicsEdgeIndices.push(o);for(var n=0;na&&o===!0,t=!0}return t===!0?n>.5*this.options.maxVelocity?!1:o:!0}},{key:"_performStep",value:function(t,e){var i=this.body.nodes[t],o=this.options.timestep,n=this.physicsBody.forces,s=this.physicsBody.velocities;if(this.previousStates[t]={x:i.x,y:i.y,vx:s[t].x,vy:s[t].y},i.options.fixed.x===!1){var r=this.modelOptions.damping*s[t].x,a=(n[t].x-r)/i.options.mass;s[t].x+=a*o,s[t].x=Math.abs(s[t].x)>e?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedrawRequests"),this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(this._stabilizationBatch.bind(this),0)}},{key:"_stabilizationBatch",value:function(){for(var t=0;this.stabilized===!1&&t=t&&i.push(n.id)}for(var o=0;oo?r.x:o,n=r.ys?r.y:s;return{x:.5*(i+o),y:.5*(n+s)}}},{key:"openCluster",value:function(t){var e=void 0===arguments[1]?!0:arguments[1];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var i=this.body.nodes[t],o=i.containedNodes,n=i.containedEdges;for(var s in o)if(o.hasOwnProperty(s)){var r=this.body.nodes[s];r=o[s],r.x=i.x,r.y=i.y,r.vx=i.vx,r.vy=i.vy,r.options.hidden=!1,r.togglePhysics(!0),delete this.clusteredNodes[s]}for(var a in n)if(n.hasOwnProperty(a)){var h=this.body.edges[a];h.options.hidden=!1,h.togglePhysics(!0)}for(var d=0;do;)e.push(this.clusteredNodes[t].node),t=this.clusteredNodes[t].clusterId,o++;return e.push(this.body.nodes[t]),e}},{key:"_getConnectedId",value:function(t,e){return t.toId!=e?t.toId:t.fromId!=e?t.fromId:t.fromId}},{key:"_getHubSize",value:function(){for(var t=0,e=0,i=0,o=0,n=0;no&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e["default"]=d,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];s.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedrawRequests===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,!1),0):window.requestAnimationFrame(this._redraw.bind(this,!1)))}},{key:"_redraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");(0===this.canvas.frame.canvas.width||0===this.canvas.frame.canvas.height)&&this.canvas.setSize(),void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;e.clearRect(0,0,i,o),this.body.emitter.emit("beforeDrawing",e),e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),this.controlNodesActive===!0&&this._drawControlNodes(e),this.body.emitter.emit("afterDrawing",e),e.restore(),t===!0&&e.clearRect(0,0,i,o)}},{key:"_drawNodes",value:function(t){for(var e=void 0===arguments[1]?!1:arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l0)for(var r=0;rt.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.bottom&&(i=t.shape.boundingBox.top),ot.shape.boundingBox.left&&(n=t.shape.boundingBox.left),st.shape.boundingBox.bottom&&(i=t.shape.boundingBox.top),o.5*this.body.nodeIndices.length)return void this.fit(i,!1);t=this._getRange(i.nodes);var a=this.body.nodeIndices.length;e=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);e*=h}else{this.body.emitter.emit("_redraw",!0),t=this._getRange(i.nodes);var d=1.1*Math.abs(t.maxX-t.minX),l=1.1*Math.abs(t.maxY-t.minY),u=this.canvas.frame.canvas.clientWidth/d,c=this.canvas.frame.canvas.clientHeight/l;e=c>=u?u:c}e>1?e=1:0===e&&(e=1);var p=this._findCenter(t),f={position:p,scale:e,animation:i.animation};this.moveTo(f)}},{key:"focus",value:function(t){var e=void 0===arguments[1]?{}:arguments[1];if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.body.view.translation),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=void 0===arguments[0]?!1:arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=s.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getPosition",value:function(){return{x:this.body.view.translation.x,y:this.body.view.translation.y}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&t.changedPointers[0].ctrlKey;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.pageX,y:t.pageY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount();h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0):0>h-n&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):0>a-o&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"onDragStart",value:function(t){void 0===this.drag.pointer&&this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=l.extend({},this.body.view.translation),this.drag.nodeId=void 0,this.selectionHandler._generateClickEvent("dragStart",t,this.drag.pointer),void 0!==e&&this.options.dragNodes===!0){this.drag.nodeId=e.id,e.isSelected()===!1&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(e));var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}}},{key:"onDrag",value:function(t){var e=this;if(this.drag.pinched!==!0){this.body.emitter.emit("unlockNode");var i=this.getPointer(t.center);this.selectionHandler._generateClickEvent("dragging",t,i);var o=this.drag.selection;if(o&&o.length&&this.options.dragNodes===!0)!function(){var t=i.x-e.drag.pointer.x,n=i.y-e.drag.pointer.y;o.forEach(function(i){var o=i.node;i.xFixed===!1&&(o.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(i.x)+t)),i.yFixed===!1&&(o.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(i.y)+n))}),e.body.emitter.emit("startSimulation")}();else if(this.options.dragView===!0){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+n,y:this.drag.translation.y+s},this.body.emitter.emit("_redraw")}}}},{key:"onDragEnd",value:function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.body.emitter.emit("startSimulation")):this.body.emitter.emit("_requestRedraw"),this.selectionHandler._generateClickEvent("dragEnd",t,this.getPointer(t.center))}},{key:"onPinch",value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:"zoom",value:function(t,e){if(this.options.zoomView===!0){var i=this.body.view.scale;1e-5>t&&(t=1e-5),t>10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),t>i?this.body.emitter.emit("zoom",{direction:"+"}):this.body.emitter.emit("zoom",{direction:"-"})}}},{key:"onMouseWheel",value:function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),0!==e){var i=this.body.view.scale,o=e/10;0>e&&(o/=1-o),i*=1+o;var n=this.getPointer({x:t.pageX,y:t.pageY});this.zoom(i,n)}t.preventDefault()}},{key:"onMouseMove",value:function(t){var e=this,i=this.getPointer({x:t.pageX,y:t.pageY}),o=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.bindToWindow===!1&&this.options.keyboard.enabled===!0&&this.canvas.frame.focus(),o===!1&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return e._checkShowPopup(i)},this.options.tooltipDelay))),this.options.hoverEnabled===!0){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var s=this.selectionHandler.getNodeAt(i);void 0===s&&(s=this.selectionHandler.getEdgeAt(i)),void 0!=s&&this.selectionHandler.hoverObject(s);for(var r in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(r)&&(s instanceof Node&&s.id!=r||s instanceof Edge||void 0===s)&&(this.selectionHandler.blurObject(this.hoverObj.nodes[r]),delete this.hoverObj.nodes[r]);this.body.emitter.emit("_requestRedraw")}}},{key:"_checkShowPopup",value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,h=this.body.nodes,l=void 0,u=[],c=0;c0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],c=0;c0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new d["default"](this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e["default"]=u,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o0?e===!0?this.body.edges[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_addToSelection",value:function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t}},{key:"_addToHover",value:function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:"_removeFromSelection",value:function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]}},{key:"unselectAll",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].unselect();for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&this.selectionObj.edges[e].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedNode",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return void 0}},{key:"_getSelectedEdge",value:function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return void 0}},{key:"_getSelectedEdgeCount",value:function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t}},{key:"_getSelectedObjectCount",value:function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t}},{key:"_selectionIsEmpty",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptions(e);if(i===!0)return this.body.emitter.emit("refresh"),s.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptions",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={solver:"hierarchicalRepulsion"},this.optionsBackup.physics={solver:"barnesHut"}):"object"==typeof options.physics?(this.optionsBackup.physics={solver:"barnesHut"},void 0!==options.physics.solver&&(this.optionsBackup.physics={solver:options.physics.solver}),t.physics.solver="hierarchicalRepulsion"):options.physics!==!1&&(this.optionsBackup.physics={solver:"barnesHut"},t.physics.solver="hierarchicalRepulsion");var e="horizontal";("RL"===this.options.hierarchical.direction||"LR"===this.options.hierarchical.direction)&&(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:!0,dynamic:!0},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth,dynamic:!0},t.edges.smooth={enabled:t.edges.smooth,dynamic:!1,type:e}):(this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!0},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled?!0:t.edges.smooth.enabled,dynamic:!1,type:e}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){ +var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0)for(var e=0;e0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.nodeSpacing=100;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():("directed"===this.options.hierarchical.sortMethod,0||this._determineLevelsDirected()));var n=this._getDistribution();this._placeNodesByHierarchy(n)}}},{key:"_placeNodesByHierarchy",value:function(t){var e=void 0,i=void 0;this.positionedNodes={};for(var o in t)if(t.hasOwnProperty(o))for(e in t[o].nodes)t[o].nodes.hasOwnProperty(e)&&(i=t[o].nodes[e],"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===i.x&&(i.x=t[o].distance),t[o].distance=i.x+this.nodeSpacing):(void 0===i.y&&(i.y=t[o].distance),t[o].distance=i.y+this.nodeSpacing),this.positionedNodes[e]=!0,this._placeBranchNodes(i.edges,i.id,t,o))}},{key:"_getDistribution",value:function(){var t={},e=void 0,i=void 0;for(e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){i=this.body.nodes[e];var o=void 0===this.hierarchicalLevels[e]?0:this.hierarchicalLevels[e];"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(i.y=this.options.hierarchical.levelSeparation*o,i.options.fixed.y=!0):(i.x=this.options.hierarchical.levelSeparation*o,i.options.fixed.x=!0),void 0===t[o]&&(t[o]={amount:0,nodes:{},distance:0}),t[o].amount+=1,t[o].nodes[e]=i}return t}},{key:"_getHubSize",value:function(){var t=0;for(var e in this.body.nodes)if(this.body.nodes.hasOwnProperty(e)){var i=this.body.nodes[e];void 0===this.hierarchicalLevels[e]&&(t=i.edges.length0&&(i=this._getHubSize(),0!==i);)for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],e.edges.length===i&&this._setLevel(0,e))}},{key:"_setLevel",value:function(t,e){if(void 0===this.hierarchicalLevels[e.id]){var i=void 0;this.hierarchicalLevels[e.id]=t;for(var o=0;oo&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?(void 0===s.x&&(s.x=Math.max(i[a].distance,r.x)),i[a].distance=s.x+this.nodeSpacing,this.positionedNodes[s.id]=!0):(void 0===s.y&&(s.y=Math.max(i[a].distance,r.y)),i[a].distance=s.y+this.nodeSpacing),this.positionedNodes[s.id]=!0,s.edges.length>1&&this._placeBranchNodes(s.edges,s.id,i,a))}}}]),t}();e["default"]=r,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode&&(t.body.data.edges.remove(e.edges),t.body.data.nodes.remove(e.nodes),t.body.emitter.emit("startSimulation"))})}else this.body.data.edges.remove(i),this.body.data.nodes.remove(e),this.body.emitter.emit("startSimulation")}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=s.deepExtend({},this.options.controlNodeStyle);return i.id="targetNode"+s.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e,this.body.functions.createNode(i)}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},s.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(s.recursiveDOMDelete(this.editModeDiv),s.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=s.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+s.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,dynamic:!1,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:s.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e};if("function"==typeof this.options.editEdge){if(2!==this.options.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editEdge(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw")):(i.body.data.edges.update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0});var o="string",n="boolean",s="number",r="array",a="object",h="dom",d="function",l="undefined",u={configure:{enabled:{"boolean":n},filter:{"boolean":n,string:o,array:r},container:{dom:h},__type__:{object:a,"boolean":n,string:o,array:r}},edges:{arrows:{to:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},middle:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},from:{enabled:{"boolean":n},scaleFactor:{number:s},__type__:{object:a,"boolean":n}},__type__:{string:["from","to","middle"],object:a}},color:{color:{string:o},highlight:{string:o},hover:{string:o},inherit:{string:["from","to","both"],"boolean":n},opacity:{number:s},__type__:{object:a,string:o}},dashes:{"boolean":n,array:r},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},align:{string:["horizontal","top","middle","bottom"]},__type__:{object:a,string:o}},hidden:{"boolean":n},hoverWidth:{fn:d,number:s},label:{string:o,undef:l},length:{number:s,undef:l},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},selectionWidth:{fn:d,number:s},selfReferenceSize:{number:s},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},smooth:{enabled:{"boolean":n},dynamic:{"boolean":n},type:{string:o},roundness:{number:s},__type__:{object:a,"boolean":n}},title:{string:o,undef:l},width:{number:s},value:{number:s,undef:l},__type__:{object:a}},groups:{useDefaultGroups:{"boolean":n},__any__:"get from nodes, will be overwritten below",__type__:{object:a}},interaction:{dragNodes:{"boolean":n},dragView:{"boolean":n},hideEdgesOnDrag:{"boolean":n},hideNodesOnDrag:{"boolean":n},hoverEnabled:{"boolean":n},keyboard:{enabled:{"boolean":n},speed:{x:{number:s},y:{number:s},zoom:{number:s},__type__:{object:a}},bindToWindow:{"boolean":n},__type__:{object:a,"boolean":n}},multiselect:{"boolean":n},navigationButtons:{"boolean":n},selectable:{"boolean":n},selectConnectedEdges:{"boolean":n},tooltipDelay:{number:s},zoomView:{"boolean":n},__type__:{object:a}},layout:{randomSeed:{undef:l,number:s},hierarchical:{enabled:{"boolean":n},levelSeparation:{number:s},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:a,"boolean":n}},__type__:{object:a}},manipulation:{enabled:{"boolean":n},initiallyActive:{"boolean":n},addNode:{"boolean":n,fn:d},addEdge:{"boolean":n,fn:d},editNode:{fn:d},editEdge:{"boolean":n,fn:d},deleteNode:{"boolean":n,fn:d},deleteEdge:{"boolean":n,fn:d},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:a,"boolean":n}},nodes:{borderWidth:{number:s},borderWidthSelected:{number:s,undef:l},brokenImage:{string:o,undef:l},color:{border:{string:o},background:{string:o},highlight:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},hover:{border:{string:o},background:{string:o},__type__:{object:a,string:o}},__type__:{object:a,string:o}},fixed:{x:{"boolean":n},y:{"boolean":n},__type__:{object:a,"boolean":n}},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},stroke:{number:s},strokeColor:{string:o},__type__:{object:a,string:o}},group:{string:o,number:s,undef:l},hidden:{"boolean":n},icon:{face:{string:o},code:{string:o},size:{number:s},color:{string:o},__type__:{object:a}},id:{string:o,number:s},image:{string:o,undef:l},label:{string:o,undef:l},level:{number:s,undef:l},mass:{number:s},physics:{"boolean":n},scaling:{min:{number:s},max:{number:s},label:{enabled:{"boolean":n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:a,"boolean":n}},customScalingFunction:{fn:d},__type__:{object:a}},shadow:{enabled:{"boolean":n},size:{number:s},x:{number:s},y:{number:s},__type__:{object:a,"boolean":n}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},size:{number:s},title:{string:o,undef:l},value:{number:s,undef:l},x:{number:s},y:{number:s},__type__:{object:a}},physics:{barnesHut:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},__type__:{object:a}},repulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},hierarchicalRepulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:a}},maxVelocity:{number:s},minVelocity:{number:s},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion"]},stabilization:{enabled:{"boolean":n},iterations:{number:s},updateInterval:{number:s},onlyDynamicEdges:{"boolean":n},fit:{"boolean":n},__type__:{object:a,"boolean":n}},timestep:{number:s},__type__:{object:a,"boolean":n}},autoResize:{"boolean":n},clickToUse:{"boolean":n},locale:{string:o},locales:{__any__:{object:a},__type__:{object:a}},height:{string:o},width:{string:o},__type__:{object:a}};u.groups.__any__=u.nodes,u.manipulation.controlNodeStyle=u.nodes;var c={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[3,0,20,1]}},shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05]},middle:{enabled:!1,scaleFactor:[1,0,3,.05]},from:{enabled:!1,scaleFactor:[1,0,3,.05]}},color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[1,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[2,0,5,.1],physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[3,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,dynamic:!0,type:["continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{randomSeed:[0,0,500,1],hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hoverEnabled:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0 +},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,5,.005],damping:[.09,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,5,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,5,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","repulsion","hierarchicalRepulsion"],timestep:[.5,0,1,.05]},global:{locale:["en","nl"]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1)},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;10>o;o++){var n=o%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;0>i-2*n&&(n=i/2),0>o-2*n&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,o){var n=.5522848,s=i/2*n,r=o/2*n,a=t+i,h=e+o,d=t+i/2,l=e+o/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-s,e,d,e),this.bezierCurveTo(d+s,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+s,h,d,h),this.bezierCurveTo(d-s,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=1/3,s=i,r=o*n,a=.5522848,h=s/2*a,d=r/2*a,l=t+s,u=e+r,c=t+s/2,p=e+r/2,f=e+(o-r/2),m=e+o;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,c+h,u,c,u),this.bezierCurveTo(c-h,u,t,p+d,t,p),this.bezierCurveTo(t,p-d,c-h,e,c,e),this.bezierCurveTo(c+h,e,l,p-d,l,p),this.lineTo(l,f),this.bezierCurveTo(l,f+d,c+h,m,c,m),this.bezierCurveTo(c-h,m,t,f+d,t,f),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,o){var n=t-o*Math.cos(i),s=e-o*Math.sin(i),r=t-.9*o*Math.cos(i),a=e-.9*o*Math.sin(i),h=n+o/3*Math.cos(i+.5*Math.PI),d=s+o/3*Math.sin(i+.5*Math.PI),l=n+o/3*Math.cos(i-.5*Math.PI),u=s+o/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,u),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=0>r?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.bodyHammer=a(document&&document.body,{prevent_default:!1}),this.bodyHammer.on("tap",function(i){n(i.target,t)||e.deactivate()}),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(85),r=i(43),a=i(41),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.bodyHammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return Ti.apply(null,arguments)}function i(t){Ti=t}function o(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function n(t){return"[object Array]"===Object.prototype.toString.call(t)}function s(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function r(t,e){var i,o=[];for(i=0;i0)for(i in Ei)o=Ei[i],n=e[o],"undefined"!=typeof n&&(t[o]=n);return t}function p(t){c(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,e.updateOffset(this),Si=!1)}function f(t){return t instanceof p||null!=t&&a(t,"_isAMomentObject")}function m(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function v(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;n>o;o++)(i&&t[o]!==e[o]||!i&&m(t[o])!==m(e[o]))&&r++;return r+s}function g(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,o,n,s=0;s0;){if(o=w(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&v(n,i,!0)>=e-1)break;e--}s++}return null}function w(e){var i=null;if(!Pi[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Ci._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),_(i)}catch(o){}return Pi[e]}function _(t,e){var i;return t&&(i="undefined"==typeof e?k(t):x(t,e),i&&(Ci=i)),Ci._abbr}function x(t,e){return null!==e?(e.abbr=t,Pi[t]||(Pi[t]=new g),Pi[t].set(e),_(t),Pi[t]):(delete Pi[t],null)}function k(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ci;if(!n(t)){if(e=w(t))return e;t=[t]}return b(t)}function M(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function D(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function O(t){var e,i,o={};for(i in t)a(t,i)&&(e=D(i),e&&(o[e]=t[i]));return o}function T(t,i){return function(o){return null!=o?(E(this,t,o),e.updateOffset(this,i),this):C(this,t)}}function C(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function S(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=D(t),"function"==typeof this[t])return this[t](e);return this}function P(t,e,i){for(var o=""+Math.abs(t),n=t>=0;o.lengthe;e++)Li[o[e]]?o[e]=Li[o[e]]:o[e]=N(o[e]);return function(n){var s="";for(e=0;i>e;e++)s+=o[e]instanceof Function?o[e].call(n,t):o[e];return s}}function z(t,e){return t.isValid()?(e=L(e,t.localeData()),zi[e]||(zi[e]=A(e)),zi[e](t)):t.localeData().invalidDate()}function L(t,e){function i(t){return e.longDateFormat(t)||t}var o=5;for(Ai.lastIndex=0;o>=0&&Ai.test(t);)t=t.replace(Ai,i),Ai.lastIndex=0,o-=1;return t}function R(t,e,i){Ji[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function F(t,e){return a(Ji,t)?Ji[t](e._strict,e._locale):new RegExp(B(t))}function B(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function j(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(o=function(t,i){i[e]=m(t)}),i=0;io;o++){if(n=d([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[o].test(t))return o;if(i&&"MMM"===e&&this._shortMonthsParse[o].test(t))return o;if(!i&&this._monthsParse[o].test(t))return o}}function q(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),W(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function X(t){return null!=t?(q(this,t),e.updateOffset(this,!0),this):C(this,"Month")}function Z(){return W(this.year(),this.month())}function K(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[to]<0||i[to]>11?to:i[eo]<1||i[eo]>W(i[$i],i[to])?eo:i[io]<0||i[io]>24||24===i[io]&&(0!==i[oo]||0!==i[no]||0!==i[so])?io:i[oo]<0||i[oo]>59?oo:i[no]<0||i[no]>59?no:i[so]<0||i[so]>999?so:-1,t._pf._overflowDayOfYear&&($i>e||e>eo)&&(e=eo),t._pf.overflow=e),t}function J(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function Q(t,e){var i=!0;return h(function(){return i&&(J(t),i=!1),e.apply(this,arguments)},e)}function $(t,e){ho[t]||(J(e),ho[t]=!0)}function tt(t){var e,i,o=t._i,n=lo.exec(o);if(n){for(t._pf.iso=!0,e=0,i=uo.length;i>e;e++)if(uo[e][1].exec(o)){t._f=uo[e][0]+(n[6]||" ");break}for(e=0,i=co.length;i>e;e++)if(co[e][1].exec(o)){t._f+=co[e][0];break}o.match(Xi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=po.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,o,n,s,r){var a=new Date(t,e,i,o,n,s,r);return 1970>t&&a.setFullYear(t),a}function ot(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function nt(t){return st(t)?366:365}function st(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return st(this.year())}function at(t,e,i){var o,n=i-e,s=i-t.day();return s>n&&(s-=7),n-7>s&&(s+=7),o=Ot(t).add(s,"d"),{week:Math.ceil(o.dayOfYear()/7),year:o.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ut(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function ct(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function pt(t,e,i,o,n){var s,r,a=ot(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:n,s=n-a+(a>o?7:0)-(n>a?7:0),r=7*(e-1)+(i-n)+s+1,{year:r>0?t:t-1,dayOfYear:r>0?r:nt(t-1)+r}}function ft(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mt(t,e,i){return null!=t?t:null!=e?e:i}function vt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function gt(t){var e,i,o,n,s=[];if(!t._d){for(o=vt(t),t._w&&null==t._a[eo]&&null==t._a[to]&&yt(t),t._dayOfYear&&(n=mt(t._a[$i],o[$i]),t._dayOfYear>nt(n)&&(t._pf._overflowDayOfYear=!0),i=ot(n,0,t._dayOfYear),t._a[to]=i.getUTCMonth(),t._a[eo]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[io]&&0===t._a[oo]&&0===t._a[no]&&0===t._a[so]&&(t._nextDay=!0,t._a[io]=0),t._d=(t._useUTC?ot:it).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[io]=24)}}function yt(t){var e,i,o,n,s,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(s=1,r=4,i=mt(e.GG,t._a[$i],at(Ot(),1,4).year),o=mt(e.W,1),n=mt(e.E,1)):(s=t._locale._week.dow,r=t._locale._week.doy,i=mt(e.gg,t._a[$i],at(Ot(),s,r).year),o=mt(e.w,1),null!=e.d?(n=e.d,s>n&&++o):n=null!=e.e?e.e+s:s),a=pt(i,o,n,r,s),t._a[$i]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=L(t._f,t._locale).match(Ni)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Li[s]?(o?t._pf.empty=!1:t._pf.unusedTokens.push(s),Y(s,o,t)):t._strict&&!o&&t._pf.unusedTokens.push(s);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[io]<=12&&(t._pf.bigHour=void 0),t._a[io]=wt(t._locale,t._a[io],t._meridiem),gt(t),K(t)}function wt(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&12>e&&(e+=12),o||12!==e||(e=0),e):e}function _t(t){var e,i,n,s,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(NaN));for(s=0;sr)&&(n=r,i=e));h(t,i||e)}function xt(t){if(!t._d){var e=O(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],gt(t)}}function kt(t){var e,i=t._i,o=t._f;return t._locale=t._locale||k(t._l),null===i||void 0===o&&""===i?u({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),f(i)?new p(K(i)):(n(o)?_t(t):o?bt(t):Mt(t),e=new p(K(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Mt(t){var i=t._i;void 0===i?t._d=new Date:s(i)?t._d=new Date(+i):"string"==typeof i?et(t):n(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),gt(t)):"object"==typeof i?xt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Dt(t,e,i,n,s){var r={};return"boolean"==typeof i&&(n=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=s,r._l=i,r._i=t,r._f=e,r._strict=n,r._pf=o(),kt(r)}function Ot(t,e,i,o){return Dt(t,e,i,o,!1)}function Tt(t,e){var i,o;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return Ot();for(i=e[0],o=1;ot&&(t=-t,i="-"),i+P(~~(t/60),2)+e+P(~~t%60,2)})}function Nt(t){var e=(t||"").match(Xi)||[],i=e[e.length-1]||[],o=(i+"").match(yo)||["-",0,0],n=+(60*o[1])+m(o[2]);return"+"===o[0]?n:-n}function At(t,i){var o,n;return i._isUTC?(o=i.clone(),n=(f(t)||s(t)?+t:+Ot(t))-+o,o._d.setTime(+o._d+n),e.updateOffset(o,!1),o):Ot(t).local()}function zt(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Lt(t,i){var o,n=this._offset||0;return null!=t?("string"==typeof t&&(t=Nt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(o=zt(this)),this._offset=t,this._isUTC=!0,null!=o&&this.add(o,"m"),n!==t&&(!i||this._changeInProgress?Qt(this,qt(t-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?n:zt(this)}function Rt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ft(t){return this.utcOffset(0,t)}function Bt(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(zt(this),"m")),this}function jt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Nt(this._i)),this}function Ht(t){return t=t?Ot(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Yt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if(this._a){var t=this._isUTC?d(this._a):Ot(this._a);return this.isValid()&&v(this._a,t.toArray())>0}return!1}function Gt(){return!this._isUTC}function Ut(){return this._isUTC}function Vt(){return this._isUTC&&0===this._offset}function qt(t,e){var i,o,n,s=t,r=null;return Pt(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(s={},e?s[e]=t:s.milliseconds=t):(r=bo.exec(t))?(i="-"===r[1]?-1:1,s={y:0,d:m(r[eo])*i,h:m(r[io])*i,m:m(r[oo])*i,s:m(r[no])*i,ms:m(r[so])*i}):(r=wo.exec(t))?(i="-"===r[1]?-1:1,s={y:Xt(r[2],i),M:Xt(r[3],i),d:Xt(r[4],i),h:Xt(r[5],i),m:Xt(r[6],i),s:Xt(r[7],i),w:Xt(r[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Kt(Ot(s.from),Ot(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new St(s),Pt(t)&&a(t,"_locale")&&(o._locale=t._locale),o}function Xt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Kt(t,e){var i;return e=At(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Jt(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||($(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=qt(i,o),Qt(this,n,t),this}}function Qt(t,i,o,n){var s=i._milliseconds,r=i._days,a=i._months;n=null==n?!0:n,s&&t._d.setTime(+t._d+s*o),r&&E(t,"Date",C(t,"Date")+r*o),a&&q(t,C(t,"Month")+a*o),n&&e.updateOffset(t,r||a)}function $t(t){var e=t||Ot(),i=At(e,this).startOf("day"),o=this.diff(i,"days",!0),n=-6>o?"sameElse":-1>o?"lastWeek":0>o?"lastDay":1>o?"sameDay":2>o?"nextDay":7>o?"nextWeek":"sameElse";return this.format(this.localeData().calendar(n,this,Ot(e)))}function te(){return new p(this)}function ee(t,e){var i;return e=D("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Ot(t),+this>+t):(i=f(t)?+t:+Ot(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=D("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=f(t)?t:Ot(t),+t>+this):(i=f(t)?+t:+Ot(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var o,n,s=At(t,this),r=6e4*(s.utcOffset()-this.utcOffset());return e=D(e),"year"===e||"month"===e||"quarter"===e?(n=ae(this,s),"quarter"===e?n/=3:"year"===e&&(n/=12)):(o=this-s,n="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),i?n:se(n)}function ae(t,e){var i,o,n=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(n,"months");return 0>e-s?(i=t.clone().add(n-1,"months"),o=(e-s)/(s-i)):(i=t.clone().add(n+1,"months"),o=(e-s)/(i-s)),-(n+o)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ot([2e3,1]).day(e),o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(o.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Le(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Pe(t,this.localeData()),this.add(t-e,"d")):e}function Re(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Fe(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Be(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function je(t,e){return e._meridiemParse}function He(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ye(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function We(t){I(0,[t,3],0,"millisecond")}function Ge(){return this._isUTC?"UTC":""}function Ue(){return this._isUTC?"Coordinated Universal Time":""}function Ve(t){return Ot(1e3*t)}function qe(){return Ot.apply(null,arguments).parseZone()}function Xe(t,e,i){var o=this._calendar[t];return"function"==typeof o?o.call(e,i):o}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Ke(){return this._invalidDate}function Je(t){return this._ordinal.replace("%d",t)}function Qe(t){return t}function $e(t,e,i,o){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,o):n.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,o){var n=k(),s=d().set(o,e);return n[i](s,t)}function oi(t,e,i,o,n){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,n);var s,r=[];for(s=0;o>s;s++)r[s]=ii(t,s,i,n);return r}function ni(t,e){return oi(t,e,"months",12,"month")}function si(t,e){return oi(t,e,"monthsShort",12,"month")}function ri(t,e){return oi(t,e,"weekdays",7,"day")}function ai(t,e){return oi(t,e,"weekdaysShort",7,"day")}function hi(t,e){return oi(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Yo(this._milliseconds),this._days=Yo(this._days),this._months=Yo(this._months),t.milliseconds=Yo(t.milliseconds),t.seconds=Yo(t.seconds),t.minutes=Yo(t.minutes),t.hours=Yo(t.hours),t.months=Yo(t.months),t.years=Yo(t.years),this}function li(t,e,i,o){var n=qt(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function ui(t,e){return li(this,t,e,1)}function ci(t,e){return li(this,t,e,-1)}function pi(){var t,e,i,o=this._milliseconds,n=this._days,s=this._months,r=this._data,a=0;return r.milliseconds=o%1e3,t=se(o/1e3),r.seconds=t%60,e=se(t/60),r.minutes=e%60,i=se(e/60),r.hours=i%24,n+=se(i/24),a=se(fi(n)),n-=se(mi(a)),s+=se(n/30),n%=30,a+=se(s/12),s%=12,r.days=n,r.months=s,r.years=a,this}function fi(t){return 400*t/146097}function mi(t){return 146097*t/400}function vi(t){var e,i,o=this._milliseconds;if(t=D(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+12*fi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(mi(this._months/12)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 24*e*60+o/6e4;case"second":return 24*e*60*60+o/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+o;default:throw new Error("Unknown unit "+t)}}function gi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*m(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=D(t),this[t+"s"]()}function wi(t){return function(){return this._data[t]}}function _i(){return se(this.days()/7)}function xi(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function ki(t,e,i){var o=qt(t).abs(),n=sn(o.as("s")),s=sn(o.as("m")),r=sn(o.as("h")),a=sn(o.as("d")),h=sn(o.as("M")),d=sn(o.as("y")),l=n0,l[4]=i,xi.apply(null,l)}function Mi(t,e){return void 0===rn[t]?!1:void 0===e?rn[t]:(rn[t]=e,!0)}function Di(t){var e=this.localeData(),i=ki(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Oi(){var t=an(this.years()),e=an(this.months()),i=an(this.days()),o=an(this.hours()),n=an(this.minutes()),s=an(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(o||n||s?"T":"")+(o?o+"H":"")+(n?n+"M":"")+(s?s+"S":""):"P0D"}var Ti,Ci,Ei=e.momentProperties=[],Si=!1,Pi={},Ii={},Ni=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ai=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,zi={},Li={},Ri=/\d/,Fi=/\d\d/,Bi=/\d{3}/,ji=/\d{4}/,Hi=/[+-]?\d{6}/,Yi=/\d\d?/,Wi=/\d{1,3}/,Gi=/\d{1,4}/,Ui=/[+-]?\d{1,6}/,Vi=/\d+/,qi=/[+-]?\d+/,Xi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Ki=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ji={},Qi={},$i=0,to=1,eo=2,io=3,oo=4,no=5,so=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),M("month","M"),R("M",Yi),R("MM",Yi,Fi),R("MMM",Ki),R("MMMM",Ki),j(["M","MM"],function(t,e){e[to]=m(t)-1}),j(["MMM","MMMM"],function(t,e,i,o){var n=i._locale.monthsParse(t,o,i._strict);null!=n?e[to]=n:i._pf.invalidMonth=t});var ro="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ao="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ho={};e.suppressDeprecationWarnings=!1;var lo=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,uo=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],co=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],po=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=Q("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){ +t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),M("year","y"),R("Y",qi),R("YY",Yi,Fi),R("YYYY",Gi,ji),R("YYYYY",Ui,Hi),R("YYYYYY",Ui,Hi),j(["YYYY","YYYYY","YYYYYY"],$i),j("YY",function(t,i){i[$i]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return m(t)+(m(t)>68?1900:2e3)};var fo=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),M("week","w"),M("isoWeek","W"),R("w",Yi),R("ww",Yi,Fi),R("W",Yi),R("WW",Yi,Fi),H(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=m(t)});var mo={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),M("dayOfYear","DDD"),R("DDD",Wi),R("DDDD",Bi),j(["DDD","DDDD"],function(t,e,i){i._dayOfYear=m(t)}),e.ISO_8601=function(){};var vo=Q("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ot.apply(null,arguments);return this>t?this:t}),go=Q("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ot.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),R("Z",Xi),R("ZZ",Xi),j(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Nt(t)});var yo=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var bo=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,wo=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;qt.fn=St.prototype;var _o=Jt(1,"add"),xo=Jt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ko=Q("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Me("gggg","weekYear"),Me("ggggg","weekYear"),Me("GGGG","isoWeekYear"),Me("GGGGG","isoWeekYear"),M("weekYear","gg"),M("isoWeekYear","GG"),R("G",qi),R("g",qi),R("GG",Yi,Fi),R("gg",Yi,Fi),R("GGGG",Gi,ji),R("gggg",Gi,ji),R("GGGGG",Ui,Hi),R("ggggg",Ui,Hi),H(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=m(t)}),H(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),M("quarter","Q"),R("Q",Ri),j("Q",function(t,e){e[to]=3*(m(t)-1)}),I("D",["DD",2],"Do","date"),M("date","D"),R("D",Yi),R("DD",Yi,Fi),R("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),j(["D","DD"],eo),j("Do",function(t,e){e[eo]=m(t.match(Yi)[0],10)});var Mo=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),M("day","d"),M("weekday","e"),M("isoWeekday","E"),R("d",Yi),R("e",Yi),R("E",Yi),R("dd",Ki),R("ddd",Ki),R("dddd",Ki),H(["dd","ddd","dddd"],function(t,e,i){var o=i._locale.weekdaysParse(t);null!=o?e.d=o:i._pf.invalidWeekday=t}),H(["d","e","E"],function(t,e,i,o){e[o]=m(t)});var Do="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Oo="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),To="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),Be("a",!0),Be("A",!1),M("hour","h"),R("a",je),R("A",je),R("H",Yi),R("h",Yi),R("HH",Yi,Fi),R("hh",Yi,Fi),j(["H","HH"],io),j(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),j(["h","hh"],function(t,e,i){e[io]=m(t),i._pf.bigHour=!0});var Co=/[ap]\.?m?\.?/i,Eo=T("Hours",!0);I("m",["mm",2],0,"minute"),M("minute","m"),R("m",Yi),R("mm",Yi,Fi),j(["m","mm"],oo);var So=T("Minutes",!1);I("s",["ss",2],0,"second"),M("second","s"),R("s",Yi),R("ss",Yi,Fi),j(["s","ss"],no);var Po=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),We("SSS"),We("SSSS"),M("millisecond","ms"),R("S",Wi,Ri),R("SS",Wi,Fi),R("SSS",Wi,Bi),R("SSSS",Vi),j(["S","SS","SSS","SSSS"],function(t,e){e[so]=m(1e3*("0."+t))});var Io=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var No=p.prototype;No.add=_o,No.calendar=$t,No.clone=te,No.diff=re,No.endOf=ve,No.format=le,No.from=ue,No.fromNow=ce,No.get=S,No.invalidAt=ke,No.isAfter=ee,No.isBefore=ie,No.isBetween=oe,No.isSame=ne,No.isValid=_e,No.lang=ko,No.locale=pe,No.localeData=fe,No.max=go,No.min=vo,No.parsingFlags=xe,No.set=S,No.startOf=me,No.subtract=xo,No.toArray=we,No.toDate=be,No.toISOString=de,No.toJSON=de,No.toString=he,No.unix=ye,No.valueOf=ge,No.year=fo,No.isLeapYear=rt,No.weekYear=Oe,No.isoWeekYear=Te,No.quarter=No.quarters=Se,No.month=X,No.daysInMonth=Z,No.week=No.weeks=ut,No.isoWeek=No.isoWeeks=ct,No.weeksInYear=Ee,No.isoWeeksInYear=Ce,No.date=Mo,No.day=No.days=Le,No.weekday=Re,No.isoWeekday=Fe,No.dayOfYear=ft,No.hour=No.hours=Eo,No.minute=No.minutes=So,No.second=No.seconds=Po,No.millisecond=No.milliseconds=Io,No.utcOffset=Lt,No.utc=Ft,No.local=Bt,No.parseZone=jt,No.hasAlignedHourOffset=Ht,No.isDST=Yt,No.isDSTShifted=Wt,No.isLocal=Gt,No.isUtcOffset=Ut,No.isUtc=Vt,No.isUTC=Vt,No.zoneAbbr=Ge,No.zoneName=Ue,No.dates=Q("dates accessor is deprecated. Use date instead.",Mo),No.months=Q("months accessor is deprecated. Use month instead",X),No.years=Q("years accessor is deprecated. Use year instead",fo),No.zone=Q("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Rt);var Ao=No,zo={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Lo={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ro="Invalid date",Fo="%d",Bo=/\d{1,2}/,jo={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Ho=g.prototype;Ho._calendar=zo,Ho.calendar=Xe,Ho._longDateFormat=Lo,Ho.longDateFormat=Ze,Ho._invalidDate=Ro,Ho.invalidDate=Ke,Ho._ordinal=Fo,Ho.ordinal=Je,Ho._ordinalParse=Bo,Ho.preparse=Qe,Ho.postformat=Qe,Ho._relativeTime=jo,Ho.relativeTime=$e,Ho.pastFuture=ti,Ho.set=ei,Ho.months=G,Ho._months=ro,Ho.monthsShort=U,Ho._monthsShort=ao,Ho.monthsParse=V,Ho.week=ht,Ho._week=mo,Ho.firstDayOfYear=lt,Ho.firstDayOfWeek=dt,Ho.weekdays=Ie,Ho._weekdays=Do,Ho.weekdaysMin=Ae,Ho._weekdaysMin=To,Ho.weekdaysShort=Ne,Ho._weekdaysShort=Oo,Ho.weekdaysParse=ze,Ho.isPM=He,Ho._meridiemParse=Co,Ho.meridiem=Ye,_("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===m(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=Q("moment.lang is deprecated. Use moment.locale instead.",_),e.langData=Q("moment.langData is deprecated. Use moment.localeData instead.",k);var Yo=Math.abs,Wo=yi("ms"),Go=yi("s"),Uo=yi("m"),Vo=yi("h"),qo=yi("d"),Xo=yi("w"),Zo=yi("M"),Ko=yi("y"),Jo=wi("milliseconds"),Qo=wi("seconds"),$o=wi("minutes"),tn=wi("hours"),en=wi("days"),on=wi("months"),nn=wi("years"),sn=Math.round,rn={s:45,m:45,h:22,d:26,M:11},an=Math.abs,hn=St.prototype;hn.abs=di,hn.add=ui,hn.subtract=ci,hn.as=vi,hn.asMilliseconds=Wo,hn.asSeconds=Go,hn.asMinutes=Uo,hn.asHours=Vo,hn.asDays=qo,hn.asWeeks=Xo,hn.asMonths=Zo,hn.asYears=Ko,hn.valueOf=gi,hn._bubble=pi,hn.get=bi,hn.milliseconds=Jo,hn.seconds=Qo,hn.minutes=$o,hn.hours=tn,hn.days=en,hn.weeks=_i,hn.months=on,hn.years=nn,hn.humanize=Di,hn.toISOString=Oi,hn.toString=Oi,hn.toJSON=Oi,hn.locale=pe,hn.localeData=fe,hn.toIsoString=Q("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Oi),hn.lang=ko,I("X",0,0,"unix"),I("x",0,0,"valueOf"),R("x",qi),R("X",Zi),j("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),j("x",function(t,e,i){i._d=new Date(m(t))}),e.version="2.10.2",i(Ot),e.fn=Ao,e.min=Ct,e.max=Et,e.utc=d,e.unix=Ve,e.months=ni,e.isDate=s,e.locale=_,e.invalid=u,e.duration=qt,e.isMoment=f,e.weekdays=ri,e.parseZone=qe,e.localeData=k,e.isDuration=Pt,e.monthsShort=si,e.weekdaysMin=hi,e.defineLocale=x,e.weekdaysShort=ai,e.normalizeUnits=D,e.relativeTimeThreshold=Mi;var dn=e;return dn})}).call(e,i(87)(t))},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null,e=!1;return function i(o,n){function s(t){return t.match(/[^ ]+/g)}function r(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0},e.firstTarget=t;for(var o=t;o&&!i;){var n=o.hammer&&o.hammer._handlers[e.type];if(n)for(var s=0;s0?o._handlers[t]=i:(o._off(t,r),delete o._handlers[t]))}),o},o.emit=function(i,n){e||(t=n.target),o._emit(i,n)},o.destroy=function(){var t=o.element;delete t.hammer,o._handlers={},o._destroy()},o}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(f(t,i),e)}function d(t,e,i){return Array.isArray(t)?(l(t,i[e],i),!0):!1}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o-1}function _(t){return t.trim().split(/\s+/g)}function x(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function D(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=A(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=z(o);e.timeStamp=gt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=F(a,h),I(i,e),e.offsetDirection=R(e.deltaX,e.deltaY),e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,N(i,e);var d=t.element;b(e.srcEvent.target,d)&&(d=e.srcEvent.target),e.target=d}function I(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};(e.eventType===Ct||s.eventType===St)&&(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function N(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Pt&&(h>Tt||r.velocity===a)){var d=r.deltaX-e.deltaX,l=r.deltaY-e.deltaY,u=L(h,d,l);o=u.x,n=u.y,i=vt(u.x)>vt(u.y)?u.x:u.y,s=R(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function A(t){for(var e=[],i=0;in;)i+=t[n].clientX,o+=t[n].clientY,n++;return{x:mt(i/e),y:mt(o/e)}}function L(t,e,i){return{x:e/t||0,y:i/t||0}}function R(t,e){return t===e?It:vt(t)>=vt(e)?t>0?Nt:At:e>0?zt:Lt}function F(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=jt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return B(e[1],e[0],Ht)-B(t[1],t[0],Ht)}function H(t,e){return F(e[0],e[1],Ht)/F(t[0],t[1],Ht)}function Y(){this.evEl=Wt,this.evWin=Gt,this.allow=!0,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=qt,this.evWin=Xt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function G(){this.evTarget=Kt,this.evWin=Jt,this.started=!1,C.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(St|Pt)&&(i=M(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=$t,this.targetIds={},C.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(Ct|Et)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return b(t.target,h)}),e===Ct)for(n=0;na&&(e.push(t),a=e.length-1):n&(St|Pt)&&(i=!0),0>a||(e[a]=t,this.callback(this.manager,n,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var Zt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},Kt="touchstart",Jt="touchstart touchmove touchend touchcancel";p(G,C,{handler:function(t){var e=Zt[t.type];if(e===Ct&&(this.started=!0),this.started){var i=U.call(this,t,e);e&(St|Pt)&&i[0].length-i[1].length===0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}});var Qt={touchstart:Ct,touchmove:Et,touchend:St,touchcancel:Pt},$t="touchstart touchmove touchend touchcancel";p(V,C,{handler:function(t){var e=Qt[t.type],i=q.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:kt,srcEvent:t})}}),p(X,C,{handler:function(t,e,i){var o=i.pointerType==kt,n=i.pointerType==Dt;if(o)this.mouse.allow=!1;else if(n&&!this.mouse.allow)return;e&(St|Pt)&&(this.mouse.allow=!0),this.callback(t,e,i)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var te=D(pt.style,"touchAction"),ee=te!==a,ie="compute",oe="auto",ne="manipulation",se="none",re="pan-x",ae="pan-y";Z.prototype={set:function(t){t==ie&&(t=this.compute()),ee&&(this.manager.element.style[te]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return l(this.manager.recognizers,function(e){m(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),K(t.join(" "))},preventDefaults:function(t){if(!ee){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)return void e.preventDefault();var o=this.actions,n=w(o,se),s=w(o,ae),r=w(o,re);return n||s&&i&Rt||r&&i&Ft?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var he=1,de=2,le=4,ue=8,ce=ue,pe=16,fe=32;J.prototype={defaults:{},set:function(t){return u(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(d(t,"recognizeWith",this))return this;var e=this.simultaneous;return t=tt(t,this),e[t.id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return d(t,"dropRecognizeWith",this)?this:(t=tt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(d(t,"requireFailure",this))return this;var e=this.requireFail;return t=tt(t,this),-1===x(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(d(t,"dropRequireFailure",this))return this;t=tt(t,this);var e=x(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(i.options.event+(e?Q(o):""),t)}var i=this,o=this.state;ue>o&&e(!0),e(),o>=ue&&e(!0)},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=fe)},canEmit:function(){for(var t=0;ts?Nt:At,i=s!=this.pX,o=Math.abs(t.deltaX)):(n=0===r?It:0>r?zt:Lt,i=r!=this.pY,o=Math.abs(t.deltaY))),t.direction=n,i&&o>e.threshold&&n&e.direction},attrTest:function(t){return et.prototype.attrTest.call(this,t)&&(this.state&de||!(this.state&de)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this._super.emit.call(this,t)}}),p(ot,et,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&de)},emit:function(t){if(this._super.emit.call(this,t),1!==t.scale){var e=t.scale<1?"in":"out";this.manager.emit(this.options.event+e,t)}}}),p(nt,J,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[oe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(St|Pt)&&!n)this.reset();else if(t.eventType&Ct)this.reset(),this._timer=h(function(){this.state=ce,this.tryEmit()},e.time,this);else if(t.eventType&St)return ce;return fe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===ce&&(t&&t.eventType&St?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=gt(),this.manager.emit(this.options.event,this._input)))}}),p(st,et,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[se]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&de)}}),p(rt,et,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Rt|Ft,pointers:1},getTouchAction:function(){return it.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Rt|Ft)?e=t.velocity:i&Rt?e=t.velocityX:i&Ft&&(e=t.velocityY),this._super.attrTest.call(this,t)&&i&t.direction&&t.distance>this.options.threshold&&vt(e)>this.options.velocity&&t.eventType&St},emit:function(t){var e=$(t.direction);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(at,J,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ne]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances;s++)for(r=0;rp?p+1:p;var f=l/this.r,m=a.RGBToHSV(this.color.r,this.color.g,this.color.b);m.h=p,m.s=f;var v=a.HSVToRGB(m.h,m.s,m.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["color","fixed","shadow"];if(R.selectiveNotDeepExtend(o,t,e),R.mergeOptions(t,e,"shadow"),void 0!==e.color&&null!==e.color){var n=R.parseColor(e.color);R.fillIfDefined(t.color,n)}else i===!0&&(t.color=void 0,delete t.color);void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y)))}}]),t}();e["default"]=F,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;i=this.options.scaling.label.maxVisible&&(r=Number(this.options.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,d=this._getColor(a),l=o(d,2),u=l[0],c=l[1],p=this._setAlignment(t,i,h,s),f=o(p,2);i=f[0],h=f[1],t.font=(e?"bold ":"")+r+"px "+this.options.font.face,t.fillStyle=u,t.textAlign="center",this.options.font.strokeWidth>0&&(t.lineWidth=this.options.font.strokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var m=0;m0&&t.strokeText(this.lines[m],i,h),t.fillText(this.lines[m],i,h),h+=r}},{key:"_setAlignment",value:function(t,e,i,o){if("horizontal"!==this.options.font.align){e=0,i=0;var n=2;"top"===this.options.font.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.options.font.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t){var e=this.options.font.color||"#000000",i=this.options.font.strokeColor||"#ffffff";if(t<=this.options.scaling.label.drawThreshold){var o=Math.max(0,Math.min(1,1-(this.options.scaling.label.drawThreshold-t)));e=r.overrideOpacity(e,o),i=r.overrideOpacity(i,o)}return[e,i]}},{key:"getTextSize",value:function(t){var e=void 0===arguments[1]?!1:arguments[1],i={width:this._processLabel(t,e),height:this.options.font.size*this.lineCount,lineCount:this.lineCount};return i}},{key:"calculateLabelSize",value:function(t,e){var i=void 0===arguments[2]?0:arguments[2],o=void 0===arguments[3]?0:arguments[3],n=void 0===arguments[4]?"middle":arguments[4];this.labelDirty===!0&&(this.size.width=this._processLabel(t,e)),this.size.height=this.options.font.size*this.lineCount,this.size.left=i-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.options.font.size,"hanging"===n&&(this.size.top+=.5*this.options.font.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"_processLabel",value:function(t,e){var i=0,o=[""],n=0;if(void 0!==this.options.label){o=String(this.options.label).split("\n"),n=o.length,t.font=(e?"bold ":"")+this.options.font.size+"px "+this.options.font.face,i=t.measureText(o[0]).width;for(var s=1;n>s;s++){var r=t.measureText(o[s]).width;i=r>i?r:i}}return this.lines=o,this.lineCount=n,i}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2]}else"object"==typeof e.font&&r.fillIfDefined(t,e.font,i);t.size=Number(t.size)}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;ii.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return e>h}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(-1>o&&0>i||o>0&&0>i)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}}],[{key:"parseOptions",value:function(t,e){var i=void 0===arguments[2]?!1:arguments[2],o=["id","font","from","hidden","hoverWidth","label","length","line","opacity","physics","selectionWidth","selfReferenceSize","to","title","value","width"];if(f.selectiveDeepExtend(o,t,e,i),f.mergeOptions(t,e,"smooth"),f.mergeOptions(t,e,"shadow"),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&(t.dashes=void 0,delete t.dashes),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label")):i===!0&&(t.scaling=void 0,delete t.scaling),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var n=e.arrows.toLowerCase();-1!=n.indexOf("to")&&(t.arrows.to.enabled=!0),-1!=n.indexOf("middle")&&(t.arrows.middle.enabled=!0),-1!=n.indexOf("from")&&(t.arrows.from.enabled=!0)}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+JSON.stringify(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to"),f.mergeOptions(t.arrows,e.arrows,"middle"),f.mergeOptions(t.arrows,e.arrows,"from")}else i===!0&&(t.arrows=void 0,delete t.arrows);if(void 0!==e.color&&null!==e.color)if(f.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var s=!1;void 0!==e.color.color&&(t.color.color=e.color.color,s=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,s=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,s=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&s===!0&&(t.color.inherit=!1)}else i===!0&&(t.color=void 0,delete t.color)}}]),t}();e["default"]=m,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;is;s++)t=e[i[s]],t.options.mass>0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i,o,n;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1*Math.random(),e=t);var s=this.options.gravitationalConstant*n.mass*o.options.mass/(t*t*t),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i,o=e.length,n=Number.MAX_VALUE,s=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;o>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(n>d&&(n=d),d>r&&(r=d),s>l&&(s=l),l>a&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(g.root),h=0;o>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e)); +break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i,o,n,s,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii&&(s=.5*u>i?1:c*i+p,s/=i,o=t*s,n=e*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;ii?-Math.pow(f*i,2)+Math.pow(f*p,2):0,0===i?i=.01:s/=i,o=t*s,n=e*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),t}();e["default"]=s,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;i700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){this.body.view.scale*=1+this.options.keyboard.speed.zoom}},{key:"_zoomOut",value:function(){this.body.view.scale/=1+this.options.keyboard.speed.zoom}},{key:"configureKeyboardBindings",value:function(){void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=a({container:window,preventDefault:!0}):this.keycharm=a({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",this.bindToRedraw.bind(this,"_moveUp"),"keydown"),this.keycharm.bind("down",this.bindToRedraw.bind(this,"_moveDown"),"keydown"),this.keycharm.bind("left",this.bindToRedraw.bind(this,"_moveLeft"),"keydown"),this.keycharm.bind("right",this.bindToRedraw.bind(this,"_moveRight"),"keydown"),this.keycharm.bind("=",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num+",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("num-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("-",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("[",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("]",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pageup",this.bindToRedraw.bind(this,"_zoomIn"),"keydown"),this.keycharm.bind("pagedown",this.bindToRedraw.bind(this,"_zoomOut"),"keydown"),this.keycharm.bind("up",this.unbindFromRedraw.bind(this,"_moveUp"),"keyup"),this.keycharm.bind("down",this.unbindFromRedraw.bind(this,"_moveDown"),"keyup"),this.keycharm.bind("left",this.unbindFromRedraw.bind(this,"_moveLeft"),"keyup"),this.keycharm.bind("right",this.unbindFromRedraw.bind(this,"_moveRight"),"keyup"),this.keycharm.bind("=",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num+",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("num-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("-",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("[",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup"),this.keycharm.bind("]",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pageup",this.unbindFromRedraw.bind(this,"_zoomIn"),"keyup"),this.keycharm.bind("pagedown",this.unbindFromRedraw.bind(this,"_zoomOut"),"keyup")))}}]),t}();e["default"]=h,t.exports=e["default"]},function(t,e,i){function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var i=0;io&&(s=o-e-this.padding),sn&&(r=n-i-this.padding),r=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;nthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=i*s>n?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=i*n>s?this.from.y:e));else if("straightCross"===o)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.ythis.imageObj.height?(i=this.imageObj.width/this.imageObj.height,t=2*this.options.size*i||this.imageObj.width,e=2*this.options.size||this.imageObj.height):(i=this.imageObj.height/this.imageObj.width,t=2*this.options.size||this.imageObj.width,e=2*this.options.size*i||this.imageObj.height),this.width=t,this.height=e}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.lineWidth=o?a:r,t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.circle(e,i,s),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}},{key:"_drawImageAtPosition",value:function(t){0!=this.imageObj.width&&(t.globalAlpha=1,this.enableShadow(t),t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),this.disableShadow(t))}},{key:"_drawImageLabel",value:function(t,e,i,o){var n,s=0;if(void 0!==this.height){s=.5*this.height;var r=this.labelModule.getTextSize(t);r.lineCount>=1&&(s+=r.height/2)}n=i+s,this.labelModule.draw(t,e,n,o,"hanging")}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var i=0;i=l&&h>d;){var m=.5*(l+u);if(i=this.getPoint(m,a),o=Math.atan2(p.y-i.y,p.x-i.x),n=p.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=n-s,Math.abs(r)r?f===!1?l=m:u=m:f===!1?u=m:l=m,d++}return i.t=m,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){ +var a=void 0,h=void 0;a=r.x,h=r.y;var d=1e9,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=t,v=e;for(u=1;10>u;u++)c=.1*u,p=Math.pow(1-c,2)*t+2*c*(1-c)*a+Math.pow(c,2)*i,f=Math.pow(1-c,2)*e+2*c*(1-c)*h+Math.pow(c,2)*o,u>0&&(l=this._getDistanceToLine(m,v,p,f,n,s),d=d>l?l:d),m=p,v=f;return d}}]),e}(d["default"]);e["default"]=l,t.exports=e["default"]},function(t,e,i){function o(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){var i=[],o=!0,n=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(h){n=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(n)throw s}}return i}throw new TypeError("Invalid attempt to destructure non-iterable instance")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var i=0;io.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);r>=s&&h>d&&(g=.5*(s+r),u=this._pointOnCircle(o,n,l,g),c=Math.atan2(t.y-u.y,t.x-u.x),p=t.distanceToBorder(e,c),f=Math.sqrt(Math.pow(u.x-t.x,2)+Math.pow(u.y-t.y,2)),m=p-f,!(Math.abs(m)0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t){var e=this.options.color;if(e.inherit!==!1){if("both"===e.inherit&&this.from.id!==this.to.id){var i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),o=void 0,n=void 0;return o=this.from.options.color.highlight.border,n=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(o=r.overrideOpacity(this.from.options.color.border,this.options.color.opacity),n=r.overrideOpacity(this.to.options.color.border,this.options.color.opacity)):this.from.selected===!0&&this.to.selected===!1?n=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(o=this.from.options.color.border),i.addColorStop(0,o),i.addColorStop(1,n),i}this.colorDirty===!0&&("to"===e.inherit?(this.color.highlight=this.to.options.color.highlight.border,this.color.hover=this.to.options.color.hover.border,this.color.color=r.overrideOpacity(this.to.options.color.border,e.opacity)):(this.color.highlight=this.from.options.color.highlight.border,this.color.hover=this.from.options.color.hover.border,this.color.color=r.overrideOpacity(this.from.options.color.border,e.opacity)))}else this.colorDirty===!0&&(this.color.highlight=e.highlight,this.color.hover=e.hover,this.color.color=r.overrideOpacity(e.color,e.opacity));return this.colorDirty=!1,this.selected===!0?this.color.highlight:this.hover===!0?this.color.hover:this.color.color}},{key:"_circle",value:function(t,e,i,o){this.enableShadow(t),t.beginPath(),t.arc(e,i,o,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t)}},{key:"getDistanceToEdge",value:function(t,e,i,n,s,r,a){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,n,s,r,a);else{var d=this._getCircleData(),l=o(d,3),u=l[0],c=l[1],p=l[2],f=u-s,m=c-r;h=Math.abs(Math.sqrt(f*f+m*m)-p)}return this.labelModule.size.lefts&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"drawArrowHead",value:function(t,e,i,n,s){t.strokeStyle=this.getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this.getLineWidth(n,s);var r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0;if("from"===e?(d=this.from,l=this.to,u=.1,c=this.options.arrows.from.scaleFactor):"to"===e?(d=this.to,l=this.from,u=-.1,c=this.options.arrows.to.scaleFactor):(d=this.to,l=this.from,c=this.options.arrows.middle.scaleFactor),d!=l){if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var p=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);r=Math.atan2(h.y-p.y,h.x-p.x)}else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else r=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.6,i);a=(10+5*this.options.width)*c,t.arrow(h.x,h.y,r,a),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}else{var f=void 0,m=void 0,v=this._getCircleData(t),g=o(v,3),y=g[0],b=g[1],w=g[2];"from"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),f=-2*m.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(m=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),f=-2*m.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(m=this._pointOnCircle(y,b,w,.175),f=3.9269908169872414);var _=(10+5*this.options.width)*c;t.arrow(m.x,m.y,f,_),this.enableShadow(t),t.fill(),this.disableShadow(t),t.stroke()}}},{key:"enableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0.5)",t.shadowBlur=this.options.shadow.size,t.shadowOffsetX=this.options.shadow.x,t.shadowOffsetY=this.options.shadow.y)}},{key:"disableShadow",value:function(t){this.options.shadow.enabled===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e["default"]=a,t.exports=e["default"]}])}); //# sourceMappingURL=vis.map diff --git a/lib/network/modules/Validator.js b/lib/network/modules/Validator.js index 936cf502..0479ccbc 100644 --- a/lib/network/modules/Validator.js +++ b/lib/network/modules/Validator.js @@ -168,13 +168,13 @@ class Validator { let globalSearch = Validator.findInOptions(option,allOptions,[],true); let localSearchThreshold = 8; - let globalSearchThreshold = 5; + let globalSearchThreshold = 4; if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) { console.log('%cUnknown option detected: "' + option + '" in ' + Validator.printLocation(localSearch.path, option,'') + 'Perhaps it was misplaced? Matching option found at: ' + Validator.printLocation(globalSearch.path, globalSearch.closestMatch,''), printStyle); } else if (localSearch.distance <= localSearchThreshold) { - console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, localSearch.closestMatch), printStyle); + console.log('%cUnknown option detected: "' + option + '". Did you mean "' + localSearch.closestMatch + '"?' + Validator.printLocation(localSearch.path, option), printStyle); } else { console.log('%cUnknown option detected: "' + option + '". Did you mean one of these: ' + Validator.print(Object.keys(options)) + Validator.printLocation(path, option), printStyle);